|
"Extra content at the end of the document" при чтении XML | ☑ | ||
---|---|---|---|---|
0
Omskdizel
23.12.24
✎
13:35
|
Доброго дня, коллеги!
Возникла следующая ошибка: Ошибка при вызове метода контекста (Прочитать)
Парсер.Прочитать(); по причине: Ошибка разбора XML: - [12151,2] Фатальная ошибка: Extra content at the end of the document SystemId: file://D:/!/Struct.xml Исходные: 1С 8.3.22.2411, 8.3.22.1709 УТ 10.3.88.3 (обработка торговлю вообще не трогает) Win10/2k8 Анамнез: Есть файл XML со структурой типа: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="2024-12-20 00:26"> <categories> <category id="169133" parentId="7436">Категория 169133</category> <category id="174818" parentId="12994">Категория 174818</category> </categories> Строк в нем 12150. Код обработки примитивен, как и структура файла: Парсер = Новый ЧтениеXML; Парсер.ОткрытьФайл(ПутьКФайлу); Пока Парсер.Прочитать() Цикл Если Парсер.ТипУзла = ТипУзлаXML.КонецЭлемента И Парсер.Имя = "categories" Тогда Прервать; КонецЕсли; Если Парсер.ТипУзла = ТипУзлаXML.НачалоЭлемента И Парсер.Имя = "category" Тогда ИД = Парсер.ЗначениеАтрибута("id"); Родитель = Парсер.ЗначениеАтрибута("parentId"); Парсер.Прочитать(); Наименование = Парсер.Значение; С = ТЗ.Добавить(); С.ИД = ИД; С.Родитель = Родитель; С.Наименование = Наименование; КонецЕсли; КонецЦикла; Парсер.Закрыть(); Обратите внимание на номер строки с ошибкой. А теперь главный прикол, если я удаляю хотя бы пару строк, причем в любой части документа, то ошибка не выдается. Гуглил естественно, не нашел ничего по этому вопросу. Ошибки такие бывали, но они ругались в начале разбора, а у меня в конце. Подскажите, что делаю не так? |
|||
1
Мультук
гуру
23.12.24
✎
13:55
|
(0)
Смотрим сюда и говорим себе. Наверное какой-то нехороший человек впендюрил в строку "Категория <вот здесь> 174818" какой-то нехороший символ. Например перенос строки. Посмотрю как я на эту хрень в hex-редакторе, и если мои (ваши) подозрения верны, исправлю эту строку в базе, чтобы никаких "плохих символов" там не было <category id="169133" parentId="7436">Категория 169133</category> <category id="174818" parentId="12994">Категория 174818</category> |
|||
2
lEvGl
гуру
23.12.24
✎
14:05
|
(0) кривая структура xml, платформа врать не будет
|
|||
3
Omskdizel
23.12.24
✎
14:22
|
(1)(2) Я, безусловно, проверю. Но обратите внимание на то, что я удалял строки из разных мест обрабатываемого файла. В том числе и ту строку, на которой обработка спотыкалась.
|
|||
4
Omskdizel
23.12.24
✎
14:25
|
Посмотрел. Нашлись только символы перевода строки.
|
|||
5
timurhv
23.12.24
✎
14:26
|
(3) Так не удаляйте, пересохраните просто.
|
|||
6
d4rkmesa
23.12.24
✎
14:27
|
(4) Notepad++ в помощь
|
|||
7
Omskdizel
23.12.24
✎
14:29
|
(5) Пересохранил через Notepad++, картина та же.
|
|||
8
Omskdizel
23.12.24
✎
14:29
|
(6) Им и пользуюсь
|
|||
9
Omskdizel
23.12.24
✎
14:35
|
Ребят, а есть у кого возможность прогнать данные на более старших ветках платформы? Я все скину.
|
|||
10
Мультук
гуру
23.12.24
✎
15:04
|
(3)
Notepad: -- ой гляди, какая хрень. XML то невалидный, а юзер то, небось весь в печали... Удалю-ка я "лишнее". |
|||
11
lEvGl
гуру
23.12.24
✎
14:48
|
(9) платформа не при чем, проверьте структуру сами или выложите сокращенный вариант (без массы данных, только чтобы структура была видна, полностью)
|
|||
12
Omskdizel
23.12.24
✎
16:09
|
(10) У вас не получается в сарказьмь, вам надо еще потренироваться. Ответ, почему не получается, в теме есть.
(11) Нет там особо секретных данных, выкладываю оригинал. Не паковал. https://disk.yandex.ru/d/fZvB5olLL4ol7Q |
|||
13
Мультук
гуру
23.12.24
✎
16:22
|
(12)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="2024-12-20 00:26"> <categories> <category id="169133" parentId="7436">Категория 169133</category> <category id="174818" parentId="12994">Категория 174818</category> </categories> Вопросов ровно два: -- должен ли тэг "yml_catalog" закрываться судя по примеру https://docs.retailrocket.ru/docs/example-of-xml-file должен. -- закрывается ли он у вас (судя по вашему примеру - нет) |
|||
14
H A D G E H O G s
23.12.24
✎
16:22
|
В конце нет закрывающего тэга
</yml_catalog> |
|||
15
H A D G E H O G s
23.12.24
✎
16:27
|
|
|||
16
Волшебник
23.12.24
✎
16:37
|
(14)+1
Нарушена структура XML. Правильно так: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="2024-12-20 00:26"> <categories> <category id="169133" parentId="7436">Диспенсеры для гигиенических пакетов</category> ... <category id="184178" parentId="169740">Тубусы</category> </categories> </yml_catalog>
|
|||
17
lEvGl
гуру
23.12.24
✎
16:59
|
(12) данные даром не нужны были, важна была структура, чтобы не копаться в тонне текста, + понять, понимаете ли вы что такое хмл и какую должен иметь структуру
что это за узел такой <yml_catalog date="2024-12-20 00:26"> ... ладно, сказали уже все |
|||
18
Omskdizel
23.12.24
✎
17:08
|
(13)(14)(16)(17) Спасибо, ребят! Сбило меня отсутствие переноса на новую строку этого узла и странное поведение при удалении пары других узлов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |