Имя: Пароль:
1C
1С v8
Разбор XML
,
0 olo_lo1
 
17.02.14
12:39
Робяты вот есть такой элементарный XML
<?xml version="1.0" encoding="UTF-8"?>
<CONTRACT>
<ACCOUNT_NUM>12345</ACCOUNT_NUM>
<BEGIN_DATE>15.01.2014</BEGIN_DATE>
<CURRENCY_ID>RUB</CURRENCY_ID>
<SUBJECT>Услуга</SUBJECT>
<DELIVERY_ADDR>125212, г.Москва, ул. бла-бла, д.33343, кв.6</DELIVERY_ADDR>
<BUSN_TYPE>05</BUSN_TYPE>
<REGION_ID>01</REGION_ID>
<ACCOUNT_GROUP>62</ACCOUNT_GROUP>
<PAYMENT_WAY>CREDIT</PAYMENT_WAY>
<MANAGER>Соколов Севен Феоктистович</MANAGER>
</CONTRACT>

Читаю его
чтение=новый ЧтениеXML;
    чтение.ОткрытьФайл(сокрЛП(имяВыходногоФайла));
    пока чтение.Прочитать() цикл
        если Чтение.ТипУзла=ТипУзлаXML.НачалоЭлемента тогда
            ИмяУзла = Чтение.Имя;
            Сообщить("--" + ИмяУзла);
            
        иначеесли Чтение.ТипУзла=ТипУзлаXML.Текст тогда
            Значение = Чтение.Значение;
            СтруктураДоговора.Вставить(ИмяУзла,Значение);
            
        иначеесли Чтение.ТипУзла=ТипУзлаXML.КонецЭлемента тогда
            Сообщить("--Конец:" + Чтение.Имя);  
        конецесли ;
    конеццикла;

Фатальная ошибка:
Extra content at the end of the document
Ругается на строчку <MANAGER>
1 Nenaviwu1c20
 
17.02.14
12:40
А что ругается то?
2 olo_lo1
 
17.02.14
12:43
Фатальная ошибка:

Extra content at the end of the document
3 1Сергей
 
17.02.14
12:44
(2) поправлю (1) - Кто ругается?
4 mehfk
 
17.02.14
12:44
(0) Не воспроизводится.
5 mehfk
 
17.02.14
12:45
После </CONTRACT> есть какие-нибудь данные ?
6 olo_lo1
 
17.02.14
12:58
(5) да есть, но какое это имеет значение ?
встает раком на строчке <MANAGER>, вначале он ее читает, а затем в следующей итерации выдает ошибку
может дело в русском языке..
7 Wobland
 
17.02.14
12:59
(6) а как ты понимаешь выражение "Extra content at the end of the document"?
8 olo_lo1
 
17.02.14
13:00
(5) считай что после </CONTRACT> нет никаких данных.
9 Torquader
 
17.02.14
13:00
Ну, нужно правильно UFT-8 писать - в нём русские символы занимают два байта, а не один.
10 olo_lo1
 
17.02.14
13:00
(7) лучше без философии, скажи где ошибка
11 Wobland
 
17.02.14
13:01
(10) at the end of the document
12 olo_lo1
 
17.02.14
13:03
(11) что должно быть at the end of the document
вот такого XML
<?xml version="1.0" encoding="UTF-8"?>
<CONTRACT>
<ACCOUNT_NUM>12345</ACCOUNT_NUM>
<BEGIN_DATE>15.01.2014</BEGIN_DATE>
<CURRENCY_ID>RUB</CURRENCY_ID>
<SUBJECT>Услуга</SUBJECT>
<DELIVERY_ADDR>125212, г.Москва, ул. бла-бла, д.33343, кв.6</DELIVERY_ADDR>
<BUSN_TYPE>05</BUSN_TYPE>
<REGION_ID>01</REGION_ID>
<ACCOUNT_GROUP>62</ACCOUNT_GROUP>
<PAYMENT_WAY>CREDIT</PAYMENT_WAY>
<MANAGER>Соколов Севен Феоктистович</MANAGER>
</CONTRACT>
13 Смотрящий от 1С
 
17.02.14
13:04
недопустимых символов точно нет в Феоктистовиче?
14 olo_lo1
 
17.02.14
13:07
(13) а что такое недопустимые символы, как это понять ?
15 mehfk
 
17.02.14
13:10
http://rghost.ru/52481841

Не воспроизводится ошибка
16 olo_lo1
 
17.02.14
13:14
(15) попробуй полностью
<?xml version="1.0" encoding="UTF-8"?>
<CONTRACT>
<ACCOUNT_NUM>12345</ACCOUNT_NUM>
<BEGIN_DATE>15.01.2014</BEGIN_DATE>
<CURRENCY_ID>RUB</CURRENCY_ID>
<SUBJECT>Услуга</SUBJECT>
<DELIVERY_ADDR>125212, г.Москва, ул. бла-бла, д.33343, кв.6</DELIVERY_ADDR>
<BUSN_TYPE>05</BUSN_TYPE>
<REGION_ID>01</REGION_ID>
<ACCOUNT_GROUP>62</ACCOUNT_GROUP>
<PAYMENT_WAY>CREDIT</PAYMENT_WAY>
<MANAGER>Соколов Севен Феоктистович</MANAGER>
</CONTRACT>
<COMPANY>
<CAGENT_TYPE>CUSTOMER</CAGENT_TYPE>
<COMPANY_TYPE>FIZ</COMPANY_TYPE>
<COMPANY_NAME>Хнычка Галина Павловна</COMPANY_NAME>
<COMPANY_SHORT_NAME>Хнычка Галина Павловна</COMPANY_SHORT_NAME>
<COMPANY_INN>7735051XXXX7</COMPANY_INN>
<COMPANY_KPP> </COMPANY_KPP>
<COMPANY_OGRN></COMPANY_OGRN>
<COMPANY_BANK_NAME> </COMPANY_BANK_NAME>
<COMPANY_BIK></COMPANY_BIK>
<COMPANY_RS> </COMPANY_RS>
<COMPANY_KS> </COMPANY_KS>
<COMPANY_CONTACT_EMAIL>[email protected]</COMPANY_CONTACT_EMAIL>
<COMPANY_CONTACT_PHONE>8(900) 900-00-00</COMPANY_CONTACT_PHONE>
<COMPANY_CONTACT_FAX> </COMPANY_CONTACT_FAX>
<COMPANY_FACT_ADDR>125212, г.Москва, бла-бла д.43, кв.6</COMPANY_FACT_ADDR>
<COMPANY_POST_ADDR>125212, г.Москва, бла-бла, д.43, кв.6</COMPANY_POST_ADDR>
<COMPANY_YURD_ADDR>103498, г.Москва, бла-бла, кв.125</COMPANY_YURD_ADDR>
<FIZ_PASSPORT_PREFIX>45 10</FIZ_PASSPORT_PREFIX>
<FIZ_PASSPORT_NUMBER>820000</FIZ_PASSPORT_NUMBER>
<FIZ_PASSPORT_ISSUE>ОТД-НИЕМ ПО РАЙОНАМ МАТУШКИНО </FIZ_PASSPORT_ISSUE>
<FIZ_PASSPORT_DATE>05.08.1810</FIZ_PASSPORT_DATE>
</COMPANY>
17 Wobland
 
17.02.14
13:15
вроде как корневой узел может быть только один, не?
18 1Сергей
 
17.02.14
13:17
(16) весь документ должен быть одним узлом. Т.е.
1. описание
2. Открытие корневого узла
3. Внутренние узлы
4. ...
5. Закрытие корневого узла

У тебя же куча корневых узлов.
(17)+1
19 Wobland
 
17.02.14
13:18
правильный ответ, как всегда, в начале
20 olo_lo1
 
17.02.14
13:23
(19) а почему тогда он не сразу ругается, а где-то в середине, а до этого отрабатывает ?
21 mehfk
 
17.02.14
13:25
(20) Потому что такой алгоритм у парсера.
22 Wobland
 
17.02.14
13:25
(20) так уж он устроен - читает последовательно
23 1Сергей
 
17.02.14
13:26
(20) потому, что текстовые файлы считываются построчно
24 olo_lo1
 
17.02.14
13:31
Спасибо, мопед не мой, мне его в таком виде присылают.
25 Wobland
 
17.02.14
13:34
немного смахивает на XML, да
26 olo_lo1
 
17.02.14
13:45
как бы не немного. уговор что именно в XML. придется тупым перебором TXT читать
27 Wobland
 
17.02.14
13:56
завернуть всё содержимое в корень не предлагать?
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn