|
Добавление в XML новых строк | ☑ | ||
|---|---|---|---|---|
|
0
Niel_84
31.05.26
✎
11:02
|
Добрый день. Помогите, пожалуйста, разобраться...
Данные = ПолучитьИзВременногоХранилища(Хранилище);
Расширение = ".xml";
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
Данные.Записать(ИмяВременногоФайла);
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
ЧтениеXML.Закрыть();
СписокЭлементовDOMФайл = ДокументDOM.ПолучитьЭлементыПоИмени("Файл");
Для Каждого ЭлементDOM Из СписокЭлементовDOMФайл Цикл
Если ЭлементDOM.ЕстьАтрибут("ИдФайл") Тогда
ЭлементDOM.УстановитьАтрибут("ИдФайл",СтрЗаменить((ЭлементDOM.Атрибуты.ПолучитьИменованныйЭлемент("ИдФайл").Значение),"_0_0_0_0_0_00", "_0_1_0_0_0_00"));
КонецЕсли;
КонецЦикла;
СписокЭлементовDOMДопСведТов = ДокументDOM.ПолучитьЭлементыПоИмени("ДопСведТов");
Для Каждого ЭлементDOM Из СписокЭлементовDOMДопСведТов Цикл
Если ЭлементDOM.ЕстьАтрибут("КодТов") Тогда
Атрибут = ЭлементDOM.Атрибуты.ПолучитьИменованныйЭлемент("КодТов").Значение;
GTIN = НайтиGTIN(Атрибут);
ЭлементGTIN = ДокументDOM.СоздатьЭлемент("ИнфПолФХЖ2");
Элемент.УстановитьАтрибут("GTIN", ЭлементGTIN);
//как добавить в существующий файл строку
//<ИнфПолФХЖ2 Идентиф="GTIN" Значен="00000000000000" />
//после <ИнфПолФХЖ2 Идентиф="ID товара" Значен="000000000" />
//то есть должно быть так:
//<ИнфПолФХЖ2 Идентиф="ID товара" Значен="000000000" /
//<ИнфПолФХЖ2 Идентиф="GTIN" Значен="00000000000000" />
KIZ = НайтиKIZ(Атрибут);
Для Каждого Строка Из KIZ Цикл
СписокЭлементовDOMДопСведТов.Добавить(Элемент);
Элемент.УстановитьАтрибут("КИЗ",Строка);
//как в существующим файле изменить строку:
//<ДопСведТов КодТов="00-0000" />
//на ниже следующее(конструкция <ДопСведТов КодТов="00-0000" />
//имеет закрывающий тег /, его нужно убрать и поставить в конце </ДопСведТов>):
//<ДопСведТов КодТов="00-0000">
// <НомСредИдентТов>
// <КИЗ>0000000000000000000000000000000</КИЗ>
// <КИЗ>0000000000000000000000000000000</КИЗ>
// <КИЗ>0000000000000000000000000000000</КИЗ>
// <КИЗ>0000000000000000000000000000000</КИЗ>
// </НомСредИдентТов>
//</ДопСведТов>
КонецЦикла;
КонецЕсли;
КонецЦикла;
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла, "windows-1251");
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);
ЗаписьXML.Закрыть();
Заранее всем спасибо. |
|||
|
1
Chameleon1980
31.05.26
✎
11:28
|
ну блин.
что у тебя есть сейчас? ПостроительDOM вернее ДокументDOM потом смотри его методы добавляй и записывай обратно наверное так да голову никто не хочет включать? где код украл? |
|||
|
2
Niel_84
31.05.26
✎
11:59
|
(1) это мой код
например в этом месте СписокЭлементовDOMФайл = ДокументDOM.ПолучитьЭлементыПоИмени("Файл"); Для Каждого ЭлементDOM Из СписокЭлементовDOMФайл Цикл Если ЭлементDOM.ЕстьАтрибут("ИдФайл") Тогда ЭлементDOM.УстановитьАтрибут("ИдФайл",СтрЗаменить((ЭлементDOM.Атрибуты.ПолучитьИменованныйЭлемент("ИдФайл").Значение),"_0_0_0_0_0_00", "_0_1_0_0_0_00")); КонецЕсли; КонецЦикла; получается вторая строка была: Файл xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" стала <Файл xmlns:xsd="http://www.w3.org/2001/XMLSchema" Подскажите, пожалуйста, что не так почему изменилась с xmlns:xsi на xmlns:xsd и обрезало адрес. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |