Добавление атрибута в элементDom
Добрый день
заполняю шаблон word посредством его разархивирования и работой с документом document.xml
в некоторые тэги w:t необходимо ставить особый атрибут xml:space, что бы сохранять расположение пробелов
при попытке добавить/Создать атрибут посредством
Система создает атрибут, но у него становится не это имя, ПространствоИменURI пропадает, ну и соответственно нет префикса.
Может кто то сталкивался с этим, как установить этот атрибут, что бы система понимала, что он особый.
p.s. я да же пыталась его находить и клонировать, при клонировании убиралось ПространствоИменURI и имя атрибута становилось другим.
а если устанавливать атрибут
то начинает ругаться при сохранении на неправильность имен XML
заполняю шаблон word посредством его разархивирования и работой с документом document.xml
в некоторые тэги w:t необходимо ставить особый атрибут xml:space, что бы сохранять расположение пробелов
при попытке добавить/Создать атрибут посредством
Атрибут1 = ДокументДом.СоздатьАтрибут("http://www.w3.org/XML/1998/namespace","xml:space");
Система создает атрибут, но у него становится не это имя, ПространствоИменURI пропадает, ну и соответственно нет префикса.
Может кто то сталкивался с этим, как установить этот атрибут, что бы система понимала, что он особый.
p.s. я да же пыталась его находить и клонировать, при клонировании убиралось ПространствоИменURI и имя атрибута становилось другим.
а если устанавливать атрибут
ЭлСпискаWT.УстановитьАтрибут("xml:space","preserve");
то начинает ругаться при сохранении на неправильность имен XML
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(2)
так не сработает
данные нужного атрибута:
Атрибут АтрибутDOM АтрибутDOM
URIПространстваИмен "http://www.w3.org/XML/1998/namespace" Строка
Атрибуты Неопределено
БазовыйURI "sfile://C:/Users/1C_System/AppData/Local/Temp/cc4b6bf1-644e-46a1-93c6-299297946868/word/document.xml" Строка
ДокументВладелец ДокументDOM ДокументDOM
ДочерниеУзлы СписокУзловDOM СписокУзловDOM
Значение "preserve" Строка
ЗначениеУзла "preserve" Строка
Имя "xml:space" Строка
ИмяУзла "xml:space" Строка
ЛокальноеИмя "space" Строка
ПервыйДочерний ТекстDOM ТекстDOM
ПоследнийДочерний ТекстDOM ТекстDOM
ПредыдущийСоседний Неопределено
Префикс "xml" Строка
РодительскийУзел Неопределено
СледующийСоседний Неопределено
ТекстовоеСодержимое "preserve" Строка
ТипУзла Атрибут ТипУзлаDOM
Указан Истина Булево
ЭлементВладелец ЭлементDOM ЭлементDOM
ЯвляетсяИдентификатором Ложь Булево
и то что потом получается, если создавать самой
Свойство Значение Тип
ЭлСпискаWT.Атрибуты[0] АтрибутDOM АтрибутDOM
URIПространстваИмен "" Строка
Атрибуты Неопределено
БазовыйURI "sfile://C:/Users/1C_System/AppData/Local/Temp/cc4b6bf1-644e-46a1-93c6-299297946868/word/document.xml" Строка
ДокументВладелец ДокументDOM ДокументDOM
ДочерниеУзлы СписокУзловDOM СписокУзловDOM
Значение "preserve" Строка
ЗначениеУзла "preserve" Строка
Имя "space" Строка
ИмяУзла "space" Строка
ЛокальноеИмя "space" Строка
ПервыйДочерний ТекстDOM ТекстDOM
ПоследнийДочерний ТекстDOM ТекстDOM
ПредыдущийСоседний Неопределено
Префикс "" Строка
РодительскийУзел Неопределено
СледующийСоседний Неопределено
ТекстовоеСодержимое "preserve" Строка
ТипУзла Атрибут ТипУзлаDOM
Указан Истина Булево
ЭлементВладелец ЭлементDOM ЭлементDOM
ЯвляетсяИдентификатором Ложь Булево
так не сработает
данные нужного атрибута:
Атрибут АтрибутDOM АтрибутDOM
URIПространстваИмен "http://www.w3.org/XML/1998/namespace" Строка
Атрибуты Неопределено
БазовыйURI "sfile://C:/Users/1C_System/AppData/Local/Temp/cc4b6bf1-644e-46a1-93c6-299297946868/word/document.xml" Строка
ДокументВладелец ДокументDOM ДокументDOM
ДочерниеУзлы СписокУзловDOM СписокУзловDOM
Значение "preserve" Строка
ЗначениеУзла "preserve" Строка
Имя "xml:space" Строка
ИмяУзла "xml:space" Строка
ЛокальноеИмя "space" Строка
ПервыйДочерний ТекстDOM ТекстDOM
ПоследнийДочерний ТекстDOM ТекстDOM
ПредыдущийСоседний Неопределено
Префикс "xml" Строка
РодительскийУзел Неопределено
СледующийСоседний Неопределено
ТекстовоеСодержимое "preserve" Строка
ТипУзла Атрибут ТипУзлаDOM
Указан Истина Булево
ЭлементВладелец ЭлементDOM ЭлементDOM
ЯвляетсяИдентификатором Ложь Булево
и то что потом получается, если создавать самой
Свойство Значение Тип
ЭлСпискаWT.Атрибуты[0] АтрибутDOM АтрибутDOM
URIПространстваИмен "" Строка
Атрибуты Неопределено
БазовыйURI "sfile://C:/Users/1C_System/AppData/Local/Temp/cc4b6bf1-644e-46a1-93c6-299297946868/word/document.xml" Строка
ДокументВладелец ДокументDOM ДокументDOM
ДочерниеУзлы СписокУзловDOM СписокУзловDOM
Значение "preserve" Строка
ЗначениеУзла "preserve" Строка
Имя "space" Строка
ИмяУзла "space" Строка
ЛокальноеИмя "space" Строка
ПервыйДочерний ТекстDOM ТекстDOM
ПоследнийДочерний ТекстDOM ТекстDOM
ПредыдущийСоседний Неопределено
Префикс "" Строка
РодительскийУзел Неопределено
СледующийСоседний Неопределено
ТекстовоеСодержимое "preserve" Строка
ТипУзла Атрибут ТипУзлаDOM
Указан Истина Булево
ЭлементВладелец ЭлементDOM ЭлементDOM
ЯвляетсяИдентификатором Ложь Булево
(4)
Итак спустя три года.
Итак спустя три года.
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Построитель = Новый ПостроительDOM;
ДокументDOM = Построитель.Прочитать(ЧтениеXML);
ЧтениеXML.Закрыть();
РазыменовательПространствИменDOM = Новый РазыменовательПространствИменDOM(ДокументDOM);
Для Каждого Параметр Из ДанныеЗаполнения Цикл
ВыражениеXPath = ДокументDOM.СоздатьВыражениеXPath("//w:t[contains(text(),'" +Параметр.Ключ+ "')]", РазыменовательПространствИменDOM);
РезультатXPath = ВыражениеXPath.Вычислить(ДокументDOM);
Узел = РезультатXPath.ПолучитьСледующий();
Пока Узел <> Неопределено Цикл
Если Узел.ПОлучитьАтрибут("http://www.w3.org/XML/1998/namespace","space")<>"preserve"
//добавлено на случай если тексту внутри которого находится более одного параметры мы уже становили атрибут
и Узел.ПОлучитьАтрибут("http://www.w3.org/XML/1998/namespace","xml_space")<>"preserve"тогда
Узел.УстановитьАтрибут("http://www.w3.org/XML/1998/namespace", "xml_space", "preserve");
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
ЗаписьXML.Закрыть();
ЧтениеТекста=Новый ЧтениеТекста(ИмяФайла,КодировкаТекста.UTF8);
Строка=ЧтениеТекста.Прочитать();
Строка=СтрЗаменить(Строка,"xml_space","xml:space");
ЧтениеТекста.Закрыть();
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,КодировкаТекста.UTF8);
ЗаписьТекста.Записать( Строка);
ЗаписьТекста.Закрыть();
Показать
Вакансии
1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день