Чтение созданного файла xml.
Добрый день программисты. Есть проблема. Вкратце. Через Winhttp.WinhttpRequest5.1 отправляю запрос на сервер и получаю результат в Winhttp.ResponseText. Получается безразмерная строка. Преобразовываю в xml через Adodb.Stream.
Далее проблема. Полученный файл не могу прочитать. Использую объект AddIn.XMLParser. при чтении первого узла ошибка исполнения метода.
Понимаю что описание расплывчатое но может кто сталкивался. Стопудов какая то мелочь.
Xml которые приходят со стороны грузятся без вопросов.
Далее проблема. Полученный файл не могу прочитать. Использую объект AddIn.XMLParser. при чтении первого узла ошибка исполнения метода.
Понимаю что описание расплывчатое но может кто сталкивался. Стопудов какая то мелочь.
Xml которые приходят со стороны грузятся без вопросов.
По теме из базы знаний
- Альтернативные способы работы с XML. Часть 3: Введение в XSL-преобразования или трансформация XML
- Загрузка из EXCEL в 1С. Чтение файла XLSX средствами 1С. ПостроительDOM
- Выгрузка в XML и загрузка из XML. Пример с передачей файла с клиента на сервер и обратно
- Загрузка в 1С документов поступления из файла XML (ЭДО формат 820) для БП 3.0, УТ10/11, КА2.5, УПП1.3
- Проверка валидности файла XML
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Я его могу открыть и посмотреть содержимое. Файл как файл. Формата хмл. Только в самой верхней строке отсутствует параметр encoding. Я так понял это кодировка. Все файлы которые читались были с кодировкой utf-8. Пробовал в параметр CHARSET объекта AdodbStream писать ''utf-8''. Один фиг не хочет и в файле не указан парметр.
//{Процедуры и функции для работы с XML
//========================================================== ============
Функция УдалитьСимволыПереносаСтроки(СтрокаТекста)
СтрокаТекста = СтрЗаменить(СтрокаТекста, Симв(10), "");
СтрокаТекста = СтрЗаменить(СтрокаТекста, Симв(13), "");
Возврат СтрокаТекста;
КонецФункции // УдалитьСимволыПереносаСтроки(СтрокаТекста)
//========================================================== ============
Процедура ДобавитьАтрибут(ДОМ, ЭлементДом, НазваниеАтрибута, ЗначениеАтрибута)
Перем Атрибут;
Атрибут = ДОМ.createAttribute(НазваниеАтрибута);
Атрибут.nodeValue = "" + ЗначениеАтрибута;
ЭлементДом.setAttributeNode(Атрибут);
КонецПроцедуры // ДобавитьАтрибут
//========================================================== ============
Процедура ДобавитьУзелИнструкцииПоОбработке(ДОМ, НазваниеУзла = "xml", ЗначениеУзла = "version=""1.0"" encoding=""windows-1251""")
Перем УзелИнструкцииПоОбработке;
УзелИнструкцииПоОбработке = ДОМ.createProcessingInstruction(НазваниеУзла, ЗначениеУзла); //windows-1251
ДОМ.appendChild(УзелИнструкцииПоОбработке);
КонецПроцедуры // ДобавитьУзелИнструкцииПоОбработке
//========================================================== ============
Функция ДобавитьУзел(ДОМ, ИмяУзла, Родитель, Знач ТекстУзла = "", ЭтоЧисло = 0)
Перем Узел;
Если ЭтоЧисло = 1 Тогда
ТекстУзла = СтрЗаменить(Строка(ТекстУзла), ",", ".");
КонецЕсли;
Узел = ДОМ.createElement(ИмяУзла);
Если ТекстУзла <> "" Тогда
Узел.Text = УдалитьСимволыПереносаСтроки(ТекстУзла);
КонецЕсли;
Родитель.appendChild(Узел);
Возврат Узел;
КонецФункции // ДобавитьУзел
//========================================================== ============
Функция ВернутьДОМ(СтрокаXML = "")
Попытка
ДОМ = CreateObject("Msxml2.DOMDocument.6.0");
Исключение
ДОМ = CreateObject("Msxml2.DOMDocument");
КонецПопытки;
ДОМ.async = 0;
ДОМ.resolveExternals = 0;
ДОМ.validateOnParse = 0;
Если СтрокаXML = "" Тогда
Возврат ДОМ;
КонецЕсли;
Если ТипЗначенияСтр(СтрокаXML)="СписокЗначений" Тогда
Попытка
ДОМ.load(СтрокаXML.ПолучитьЗначение(1));
ДОМ.setProperty("SelectionLanguage", "XPath");
Исключение
Сообщить(ОписаниеОшибки());
ДОМ = 0;
КонецПопытки;
ИначеЕсли ТипЗначенияСтр(СтрокаXML)="OLE.IXMLDOMElement" Тогда
Попытка
ДОМ.loadXML(СтрокаXML.text);
ДОМ.setProperty("SelectionLanguage", "XPath");
Исключение
Сообщить(ОписаниеОшибки());
ДОМ = 0;
КонецПопытки;
ИначеЕсли ТипЗначенияСтр(СтрокаXML)="OLE.IXMLDOMDocument3" Тогда
Попытка
ДОМ.loadXML(СтрокаXML.xml);
ДОМ.setProperty("SelectionLanguage", "XPath");
Исключение
Сообщить(ОписаниеОшибки());
ДОМ = 0;
КонецПопытки;
Иначе
Попытка
ДОМ.loadXML(СтрокаXML);
ДОМ.setProperty("SelectionLanguage", "XPath");
Исключение
Сообщить(ОписаниеОшибки());
ДОМ = 0;
КонецПопытки;
КонецЕсли;
Возврат ДОМ;
КонецФункции
//========================================================== ============
Процедура ДополнитьДОМ(ДОМ, ДопДОМ)
Корень = ДОМ.lastChild;
ДопКорень = ДопДОМ.lastChild;
Узлы = ДопКорень.childNodes;
КоличествоУзлов = Узлы.length - 1;
Для НомерУзла = 0 По КоличествоУзлов Цикл
Корень.appendChild(Узлы.item(0));
КонецЦикла;
КонецПроцедуры // ДополнитьДОМ(ДОМ, ДопДОМ)
//========================================================== ============
Функция СохранитьXML(ДОМ, ИмяФайла = "")
Если ИмяФайла = "" Тогда
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
КонецЕсли;
ДОМ.save(ИмяФайла);
Возврат ИмяФайла;
КонецФункции // СохранитьXML(ДОМ, ИмяФайла = "")
//========================================================== ============
Процедура ПоказатьXML(ДОМ, ИмяФайла = "")
ИмяФайла = СохранитьXML(ДОМ, ИмяФайла);
ЗапуститьПриложение(СохранитьXML(ДОМ, ИмяФайла));
КонецПроцедуры // ПоказатьТокен
//========================================================== ============
Функция ПолучитьСтруктуруИзУзла(Узел)
СтруктураУзла = СоздатьОбъект("Структура");
Узлы = Узел.childNodes;
Для НомерУзла = 0 По Узлы.length - 1 Цикл
ДочернийУзел = Узлы.item(НомерУзла);
СтруктураУзла.Вставить(ДочернийУзел.baseName, ДочернийУзел.text);
КонецЦикла;
Возврат СтруктураУзла;
КонецФункции // ПолучитьСтруктуруИзУзла(Узел)
//}
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот