15.07.15 — 14:58
Есть код
ЧтениеХТМЛ = Новый ЧтениеHTML();
Дом = Новый ПостроительDOM;
ЧтениеХТМЛ.УстановитьСтроку(Тело);
Док = Дом.Прочитать(ЧтениеХТМЛ);
Получаем Док тип ДокументHTML/
А каким образом получить в результате ДокументDOM, чтобы потом xPath можно было использовать?
1 — 15.07.15 — 15:26
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.ОткрытьФайл(ИмяФайла, «UTF-8»);
ПостроительDOM = Новый ПостроительDOM;
ДокументHTML = ПостроительDOM.Прочитать(ЧтениеHTML);
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку(«UTF-8»);
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументHTML.Тело, ЗаписьXML);
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ЗаписьXML.Закрыть());
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
Разименовыватель = Новый РазыменовательПространствИменDOM(ДокументDOM);
ВыражениеXPath = «//tr/td[@class=»»s23″»]/../td[@class=»»s23″»] | //tr/td[@class=»»s23″»]/../td[@class=»»s11″»]»;
РезультатXPath = ДокументDOM.ВычислитьВыражениеXPath(ВыражениеXPath, ДокументDOM, Разименовыватель);
2 — 15.07.15 — 15:28
и вы еще сомневаетесь, что платформу пишут «чужие для хищников»?
3 — 15.07.15 — 16:24
(1) Спасибо за помощь (дожить бы до ее конца!)
Но на этой строке
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеXML);
Ошибка разбора XML: — [32,43]
Фатальная ошибка:
EntityRef: expecting ‘;’
Что нужно проверить?
4 — 15.07.15 — 16:32
ПостроительDOM.Прочитать
может сразу принимать ЧтениеHTML
5 — 15.07.15 — 16:33
аа, xpath.. сори туплю 🙂
6 — 15.07.15 — 16:53
(2) это на самом деле весьма по-русски — игла в яйце, яйцо в утке, утка в зайце. Традиции у нас крепки просто
7 — 15.07.15 — 16:55
(6) заяц в шоке
8 — 15.07.15 — 17:03
(3) Можно как-то почистить ДокументHTML.Тело, например, натравить на него НайтиНедопустимыеСимволыXML()
9 — 15.07.15 — 17:19
10 — 15.07.15 — 17:24
(1) А так разве нет
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.ОткрытьФайл(ИмяФайла, «UTF-8»);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML);
Разименовыватель = Новый РазыменовательПространствИменDOM(ДокументDOM);
ВыражениеXPath = «//tr/td[@class=»»s23″»]/../td[@class=»»s23″»] | //tr/td[@class=»»s23″»]/../td[@class=»»s11″»]»;
РезультатXPath = ДокументDOM.ВычислитьВыражениеXPath(ВыражениеXPath, ДокументDOM, Разименовыватель);
11 — 15.07.15 — 17:26
(9) Там про шарп, а у нас про 1С.
12 — 15.07.15 — 17:31
(10) При чтении из ЧтениеHTML ПостроительDOM возвращает ДокументHTML. В документации про это очень мутно написано, проверено отладчиком.
13 — 15.07.15 — 17:33
(11) Шарп элементарно к 1С прикручивается.
14 — 15.07.15 — 17:34
(13) Ваши костыли оставьте при себе.
15 — 15.07.15 — 17:37
(14) Активно ими пользуюс, а вы инвалиды пилите ПостроительDOM , золотом уже пахнет
16 — 15.07.15 — 17:39
А какая разница между ДокументDOM и ДокументHTML?
17 — 15.07.15 — 18:02
(15) Ненативно — это раз, необходимость тащить ради пары функций полгигабайта .NET со своими тараканами — это два.
18 — 15.07.15 — 18:09
(17) Вообще то Microsoft.NET почти 2 ГБ. Но он уже установлен на всех Win7 и выше.
А зачем мне натив? У меня линуксов нет и не придвидется.
Но я на раз сделаю кучу вещей, на что 1С не способен как в 7ке так и в 8 ке.
19 — 15.07.15 — 20:44
Я почему спрашивал в чем разница. Сам вот так делаю:
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(СтрокаШаблона.ШаблонТекстHTML);
ПостроительDOM = Новый ПостроительDOM;
ШаблонDOM = ПостроительDOM.Прочитать(ЧтениеHTML);
Цитата из СП:
ПостроительDOM.Прочитать (DOMBuilder.Read)
ПостроительDOM (DOMBuilder)
Прочитать (Read)
Синтаксис:
Прочитать(<ИсточникДанныхXML>)
Параметры:
<ИсточникДанныхXML> (обязательный)
Тип: ЧтениеУзловDOM, ЧтениеFastInfoset, ЧтениеXML; ЧтениеHTML.
Объект чтения данных XML или чтения данных HTML.
Возвращаемое значение:
Тип: ДокументDOM.
Описание:
Создает документ DOM. Производит чтения документа XML из источника данных XML.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Параметры DOM в созданный документ не переносятся.
Там написано, что возвращаемое значение — ДокументDOM. В Отладчике смотрю — у меня ДокументHTML. Все в нем нормально разбирается, изменяется и т.д. И никаких неудобств не испытываю. Так может я чего-то не знаю? Может мне с DOM будет лучше? Объясните нубу, ЧЯДНТ?
20 — 15.07.15 — 20:46
Может у меня не DOM а HTML потому что в тексте документа в начале стоит
<!DOCTYPE html PUBLIC «-//W3C//DTD HTML 4.0 Transitional//EN»>?
И все-таки, в чем разница то?
21 — 15.07.15 — 23:16
(20) ДокументHTML в ДокументDOM не работает с xPath. Поэтому мне и нужен ДокументDOM.
22 — 15.07.15 — 23:18
ПостроительDOM.Прочитать(ЧтениеHTML) возвращает ДокументHTML
ПостроительDOM.Прочитать(ЧтениеXML) возвращает ДокументDOM
Котокот
23 — 16.07.15 — 11:00
(22) А если ему в заголовке подменить html на xml?
Содержание:
1. XML – расширяемый язык разметки
2. Устранение Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
1. XML – расширяемый язык разметки
В данной статье речь пойдёт о причинах возникновения фатальной ошибки «Ошибка разбора XML» и способах устранения данной неполадки. Также будет дана инструкция не по устранению, но «обходу» ошибки, то есть действиям на опережение.
XML (с английского – extensible markup language – расширяемый язык разметки) – это язык разметки, который рекомендует Консорциум Всемирной паутины. Обычно язык разметки XML служит для описания документации, соответствующего типа, а также описывает действия соответствующих процессоров. Расширяемый язык разметки имеет довольно простой синтаксис, поэтому используется по всему миру, чтобы создавать и обрабатывать документацию программным способом. Он создавался именно для использования в Интернете. XML назвали именно расширяемым языком разметки, так как в нём нет фиксации разметки, которая содержится внутри документа, а именно: программист может создавать любую разметку, а ограничения будут встречаться лишь в синтаксисе.
2. Устранение Ошибки разбора XML в 1С
«Ошибка разбора XML» возникает исключительно в тонком клиенте 1С. Также стоит отметить, что «Ошибка разбора XML» также довольна схожа с ошибкой по формату потока, которая возникает в толстом клиенте. Обычно в 1С «Ошибка разбора XML» возникает по причине наличия кэша метаданных. И если очистить кэш, то ошибка будет устранена. Выглядит окно с ошибкой, а также окно с комментариями от технической поддержки следующим образом:
Рис. 1 Окно Ошибки разбора XML в 1С
XML данные читаются по потокам, так что в каждый из моментов времени объект «сосредоточен» в некотором узле XML. Из-за этого также может возникать фатальная ошибка «Ошибка разбора XML». Для того чтобы её устранить, можно вызвать функцию «ИсключениеЧтенияXml», как показано на скриншоте примера ниже:
Рис. 2 Вызов функции ИсключениеЧтенияXML для устранения Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
Данные два способа (очистка кэша метаданных и функция «ИсключениеЧтенияXml») – не все возможные варианты устранения ошибки разбора XML. Далее рассмотрим нестандартный подход, который позволит избежать ошибки еще до её возникновения.
Для наглядности будем работать в конфигурации 1С:Бухгалтерия предприятия, одной из наиболее распространенных программ фирмы 1С. У многих людей, которые пользуются программой 1С:Отчётность появляются неполадки при попытках открыть данные/файлы от налоговой. Чтобы открыть такой файл повторяем следующие действия:
· Переходим по пути: «Настройки 1С:Отчётности → Журнал обмена с контролирующими органами», как показано на скриншоте ниже:
Рис. 3 Настройка 1С Отчетности
· Далее кликаем на «Запросы» и выделяем ту выписку, которую не было возможности открыть из-за ошибки, как продемонстрировано на скриншоте ниже:
Рис. 4 Выбор выписки с Ошибкой разбора XML в 1С
· Обращаем внимание на стадию отправки, которая располагается внизу этого сообщения, и кликаем два раза на зелёный круг:
Рис. 5 Стадия отправки документа с Ошибкой разбора XML в 1С
· Появляется транспортное сообщение, в нём кликаем на «Выгрузить» и выбираем папку, куда необходимо провести выгрузку, после чего сохраняем данный файл. Пробуем открыть его, при помощи любого из графических редакторов, который может поддерживать формат PDF, как показано на скриншоте ниже:
Рис. 6 Результат обхода Ошибки разбора XML в 1С
· Всё успешно открылось, а ошибка даже не успела возникнуть.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Описание ошибки:
Попеременно на рабочих местах у пользователей стала возникать: Ошибка разбора XML: -[1,202] Фатальная ошибка: expected ‘>’ на рабочих местах клиента. Платформа 1С: Предприятие 8.2.19.80. Конфигурация 1С: Комплексная автоматизация 8, ред. 1.1. Режим работы клиент-серверный.
Найденные решения:
Как уже было отмечено попеременно возинкала ошибка на различных рабочих местах пользователей. Попытки воспроизвести ошибку на других рабочих местах под теми же пользователями ошибку не воспроизводили.
![1c 8 1с Ошибка разбора XML: -[1,202] Фатальная ошибка: expected '>'](https://www.azhur-c.ru/content/images/newsi3/source/0064%20XML%20fatal%20error/0064%20xml%20fatal%20error%2001.jpg)
![1c 8 1с Ошибка разбора XML: -[1,] Фатальная ошибка: expected '>'](https://www.azhur-c.ru/content/images/newsi3/source/0064%20XML%20fatal%20error/0064%20xml%20fatal%20error%2002.png)
Это наводило мысли о том, что ошибка словно «привязана» к рабочему месту пользователя и только к этому пользователю. У клиента часто возникали ситуации с отключением электроэнергии. А так же было настроено ночное архивирование, которое аварийно завершало не закрытие сеансы работы с 1С. Эти факты натолкнули на мысли о том, что дело в ошибках, которые накопились во временных файлах. А данная проблема «лечится» достаточно просто: удаление базы из списка баз с последующим добавлением.

При удалении базы временные файлы пользователя, связанные с базой удалются. После добавления базы и работы с ней ошибки себя не проявляли. Как было отмечено выше, накопление подобных ошибок возможно в условиях частого аварийного заверешения работы 1С.
Оцените, помогло ли Вам предоставленное описание решения ошибки?


© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
01-11-2016
Журавлев А.С.
(www.azhur-c.ru)