| 
    
        
     
     | 
    
  | 
"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) Спасибо, ребят! Сбило меня отсутствие переноса на новую строку этого узла и странное поведение при удалении пары других узлов.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |