Не понимаю как работает ПостроительDOM
вот такой код
Вот такой XML файл
Сообщение "#text", я не понимаю, считывается только первый тег мне тут сказали, но первый заголовок, он не должен считываться, если считывается второй - у него имя "String". не понимаю
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
Построитель = Новый ПостроительDOM;
ОтветДокумент = Построитель.Прочитать(ЧтениеXML);
Для Каждого Элемент0 Из ОтветДокумент.ЭлементДокумента.ДочерниеУзлы Цикл
сообщить(Элемент0.ИмяУзла);
КонецЦикла;
ПоказатьВот такой XML файл
<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Body><?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:ticketResponse xmlns:ns2="http://fclient.russianpost.org/postserver" xmlns:ns3="http://fclient.russianpost.org"><error ErrorTypeID="3" ErrorName="Ошибка авторизации: Превышен лимит количества запросов"/></ns2:ticketResponse></S:Body></S:Envelope></Body></string>
Сообщение "#text", я не понимаю, считывается только первый тег мне тут сказали, но первый заголовок, он не должен считываться, если считывается второй - у него имя "String". не понимаю
По теме из базы знаний
- XDTO - часть 3
- Дерево значений, которое негде посмотреть
- Парсер таблиц по шаблону. Автоматическая корректировка парсера. Представление таблиц в виде графа.
- Сохранение табличного документа в EXCEL (xlsx) с форматом ячеек Число, Дата, Дата время
- Глава 2. Как я написал (собрал с инфостарта) свой парсер сайта 1С Releases
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Вот таким кодом вычитывается весь документ:
Процедура ВыполнитьТест() Экспорт
Текст = ПолучитьМакет("Макет").ПолучитьТекст();
Чтение = Новый ЧтениеXML;
Чтение.УстановитьСтроку(Текст);
Построитель = Новый ПостроительDOM;
КорневойУзел = Построитель.Прочитать(Чтение);
ПрочитатьУзел(КорневойУзел, 0);
КонецПроцедуры
Процедура ПрочитатьУзел(ТекущийУзел, УровеньИерархии)
Составляющие = Новый Массив;
Для Индекс=1 По УровеньИерархии Цикл
Составляющие.Добавить(Символы.Таб);
КонецЦикла;
Составляющие.Добавить(ТекущийУзел.ИмяУзла + ?(ПустаяСтрока(ТекущийУзел.ЗначениеУзла), "", "=" + ТекущийУзел.ЗначениеУзла));
Если ТекущийУзел.Атрибуты<>Неопределено Тогда
Для Индекс=0 По ТекущийУзел.Атрибуты.Количество()-1 Цикл
Составляющие.Добавить(" [атрибут]" + ТекущийУзел.Атрибуты[Индекс].Имя + "=" + ТекущийУзел.Атрибуты[Индекс].Значение);
КонецЦикла;
КонецЕсли;
Сообщить(СтрСоединить(Составляющие));
Для Каждого Дочерний Из ТекущийУзел.ДочерниеУзлы Цикл
ПрочитатьУзел(Дочерний, УровеньИерархии + 1);
КонецЦикла;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ИС_Почта.epf
(8)Сам теперь вижу отлачая, но файл я формировал с помощью этого
а вот в прикреплнном файле я получаю текстовую строку в прикрепленном файле, если что в нем не так я не причем, это приходит с сервиса, и мне надо буде все это обработать
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ЗаписьXML.ЗаписатьОбъявлениеXML();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Ответ);
ЗаписьXML.Закрыть();
а вот в прикреплнном файле я получаю текстовую строку в прикрепленном файле, если что в нем не так я не причем, это приходит с сервиса, и мне надо буде все это обработать
Прикрепленные файлы:
1.txt
(11)Выш файл я уже обработал, макет в примере обрабатывается на ура и моим кодом, но беда в том что я получаю судя по всему ошибочный формат текстового собщения, который преобразовываю в XML, который уже нормально не читаеться.
Если начинать с начала, мне надо наладить сообщение с сервисом Почты РФ, пока я получил только один вариант ответа, он в файле 1.txt вот его надо как то обработать, он пока простой, но мне как минимум 4 таких ответа обрабатывать, на каждый велосипед изобретать, я помру.
Если начинать с начала, мне надо наладить сообщение с сервисом Почты РФ, пока я получил только один вариант ответа, он в файле 1.txt вот его надо как то обработать, он пока простой, но мне как минимум 4 таких ответа обрабатывать, на каждый велосипед изобретать, я помру.
(13)Опять уткнулся в проблему, пытаюсь прочитать значение атрибута - пишет что метода Значение у типа АтрибутDOM нет, хотя по справке есть.
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
Построитель = Новый ПостроительDOM;
ОтветДокумент = Построитель.Прочитать(ЧтениеXML);
Для Каждого Элемент0 Из ОтветДокумент.ЭлементДокумента.ДочерниеУзлы Цикл
//сообщить(Элемент0.ИмяУзла);
Если Элемент0.ИмяУзла = "S:Body" Тогда
Если Элемент0.ПервыйДочерний.ИмяУзла = "ns2:ticketResponse" Тогда
ЭлементПервыйД = Элемент0.ПервыйДочерний;
Если ЭлементПервыйД.ПервыйДочерний.ИмяУзла = "error" Тогда
ОшибкаDOM = ЭлементПервыйД.ПервыйДочерний;
ОшибкаАтрибут = ОшибкаDOM.Атрибуты.ПолучитьИменованныйЭлемент("ErrorName");
ОшибкаТекст =ОшибкаАтрибут.Значение();
//АтрибутDom
Сообщить(ОшибкаТекст)
КонецЕсли
КонецЕсли
КонецЕсли
КонецЦикла;
Показать
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)