Доброе времени суток.
Есть ХМЛ документ который хранить данные документа. ХМЛ отправляется из мобильного приложение (Интеграция). Короче в файла есть такая строка -
Меня надо добавить еще одну информацию (наименование пользователя). С помощью СОМ объекта могу делать но не тот результат получаю. Добавляю, удаляю атрибут но... Можете помогать? Спасибо всем за ранее.
Надо так -
Есть ХМЛ документ который хранить данные документа. ХМЛ отправляется из мобильного приложение (Интеграция). Короче в файла есть такая строка -
<CashOrders>
<CashOrder ID="1" Type="2" Date="15.07.2020 09:55:05" UserID="1" CustomerID="2" Amount="10.0" IsDeleted="0" Comment="" DateString="15.07.2020 09:55:05" Exported="1" Guid="d8fc0902-75c6-4c37-a154-f32108494f4f" Cancelled="0" Printed="0" DeviceId="cc1bcadc973177ce"/> Меня надо добавить еще одну информацию (наименование пользователя). С помощью СОМ объекта могу делать но не тот результат получаю. Добавляю, удаляю атрибут но... Можете помогать? Спасибо всем за ранее.
Надо так -
<CashOrders>
<CashOrder ID="1" Type="2" Date="15.07.2020 09:55:05" UserID="1" UserName="Test" CustomerID="2" Amount="10.0" IsDeleted="0" Comment="" DateString="15.07.2020 09:55:05" Exported="1" Guid="d8fc0902-75c6-4c37-a154-f32108494f4f" Cancelled="0" Printed="0" DeviceId="cc1bcadc973177ce"/>
XML = Новый COMОбъект("MSXML2.DOMDocument");
XML.Load(XML_Документ);
//Получаем корневой элемент
Root = XML.DocumentElement;
FirstElement = Root.ChildNodes(1);
ElementsCount = FirstElement.ChildNodes.Length;
Для Стр = 0 По ElementsCount - 1 Цикл
UserID = FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text;
//Вот здесь надо писать
КонецЦикла;
//Сохраняем весь документ
XML.Save("D:\Optima\Test.xml") ПоказатьПо теме из базы знаний
- Альтернативные способы работы с XML. Часть 1: Введение в DOM или объектная модель документа XML
- Основы языка запросов xpath, базовый синтаксис и применение в 1С 8.3 для работы с xml файлами сложной структуры
- Разбор XML Документа с помощью XDTO, без использования XDTO-пакетов и XML-схем (для очень ленивых)
- Простой способ передачи файла с клиента на сервер и обратно. Пример работы с XML
- Сравнение XML-документов
Найденные решения
(3)
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - .
Может кому-то пригодиться полный код -
Спасибо всем.
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - .
Может кому-то пригодиться полный код -
Процедура ДобавитьНеобходимыеДанныеДляПланаОбмена(XML_Документ)
XML = Новый COMОбъект("MSXML2.DOMDocument");
XML.Load(XML_Документ);
Root = XML.DocumentElement;
FirstElement = Root.ChildNodes(1);
ElementsCount = FirstElement.ChildNodes.Length;
Для Стр = 0 По ElementsCount - 1 Цикл
newAttr = xml.createAttribute("UserName");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
newAttr = xml.createAttribute("UserCashBox");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Касса.Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
newAttr = xml.createAttribute("UserStock");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Склад.Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
КонецЦикла;
XML.Save("D:\Test\Test.xml");
КонецПроцедуры ПоказатьСпасибо всем.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
не верно
не получится дописать в читаемый xml что-то
надо сначала все прочитать, сформировать или таблицу или структуру прочитанных данных
в процессе чтения добавить к данным требуемый атрибут со значением
закрыть чтение
только потом записать все заново в новый файл или в тот же с перезаписью
не получится дописать в читаемый xml что-то
надо сначала все прочитать, сформировать или таблицу или структуру прочитанных данных
в процессе чтения добавить к данным требуемый атрибут со значением
закрыть чтение
только потом записать все заново в новый файл или в тот же с перезаписью
Для Стр = 0 По ElementsCount - 1 Цикл
//UserID = FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text;
FirstElement.ChildNodes(Стр).Attributes.GetNamedItem("UserID").text = "123454456456";
КонецЦикла;
(3)
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - .
Может кому-то пригодиться полный код -
Спасибо всем.
Спасибо за вниманию.
Этот код который вы писали по-моему ищут тот атрибут который уже находиться в документе. Но мне надо было добавить новый атрибут в текущем элемента.
Первый очередь создал новый атрибут потом добавил его в необходимый элемент. Использовал метод "setAttributeNode" для добавление атрибута.
Хороший сайт, показывает все методы и функции для работа с XML DOM Документам - .
Может кому-то пригодиться полный код -
Процедура ДобавитьНеобходимыеДанныеДляПланаОбмена(XML_Документ)
XML = Новый COMОбъект("MSXML2.DOMDocument");
XML.Load(XML_Документ);
Root = XML.DocumentElement;
FirstElement = Root.ChildNodes(1);
ElementsCount = FirstElement.ChildNodes.Length;
Для Стр = 0 По ElementsCount - 1 Цикл
newAttr = xml.createAttribute("UserName");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
newAttr = xml.createAttribute("UserCashBox");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Касса.Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
newAttr = xml.createAttribute("UserStock");
newAttr.value = Справочники.Сотрудники.НайтиПоКоду(FirstElement.ChildNodes(Стр).attributes.getNamedItem("UserID").text).Склад.Наименование;
FirstElement.ChildNodes(Стр).setAttributeNode(newAttr);
КонецЦикла;
XML.Save("D:\Test\Test.xml");
КонецПроцедуры ПоказатьСпасибо всем.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
