Имя: Пароль:
1C
1C 7.7
v7: помогите с XML
0 DES
 
05.09.14
16:13
читаю узлы нормально (IDN, Title)
т.е. получаю значения 8000795 и BUCKET
типа таких:
<Supplier IDN="8000795" Title="BUCKET"

Если гФайл.СвойстваТекущегоУзла.КоличествоАтрибутов>0 Тогда
КвоАтрибутов = гФайл.СвойстваТекущегоУзла.КоличествоАтрибутов;
Для а=0 по КвоАтрибутов-1 Цикл
Сообщить(""+гФайл.СвойстваТекущегоУзла.НаименованиеАтрибута(а)+"="+гФайл.СвойстваТекущегоУзла.ЗначениеАтрибута(а));
КонецЦикла;
КонецЕсли;

а вот как прочитать значение такого как Seria элемента ?

<Document>
<SupInfo>
<Seria>QEW</Seria>
<Number>02333008271</Number>
1 fedoss
 
05.09.14
17:46
//__________________________________________________________
Функция ПЭ(ХМЛ, ИмяУзла, ВозвращатьЗначение = 1)
    НужныйУзел = ХМЛ.ВыбратьУзел(ИмяУзла);
    Если ВозвращатьЗначение = 1 Тогда
        Если ПустоеЗначение(НужныйУзел) = 0 Тогда
            Сообщить(ИмяУзла + "=" + НужныйУзел.Текст);
            Возврат НужныйУзел.Текст;
        Иначе
            Сообщить("Узел не найден: <" + ИмяУзла + "> в " + ХМЛ.ПолноеНаименование, "!!");
        КонецЕсли;
    Иначе
        Если ПустоеЗначение(НужныйУзел) = 1 Тогда
            Сообщить("Узел не найден: <" + ИмяУзла + "> в " + ХМЛ.ПолноеНаименование, "!!");
        КонецЕсли;
        Возврат НужныйУзел;
    КонецЕсли;    
КонецФункции
2 fedoss
 
05.09.14
17:49
(1) Это для получения значения узла по имени.
Для получения перебором узлов - ВыбратьУзлы(), ПолучитьУзел(), Узел.Текст
3 DES
 
05.09.14
21:44
да это не узел, узел я могу прочитать, я же как раз об этом и говорю.
4 Garykom
 
гуру
05.09.14
22:14
(3) Вообще то это текст узла, а ты нормально получаешь его аттрибуты

Возврат НужныйУзел.Текст;
5 Garykom
 
гуру
05.09.14
22:16
(4)+ текст узла Seria который внутри узла Document который внутри узла SupInfo...
6 DES
 
06.09.14
16:27
у этого узла отсутствует значек "равно"
7 Garykom
 
гуру
06.09.14
18:25
(6) стеб? узел это то что между <ИмяУзла> и </ИмяУзла> включая эти начало и конец
8 DES
 
07.09.14
13:25
да не стеб.  у одного узла есть атрибуты и их я получаю, а как у этого узла взять его параметр ?
9 КонецЦикла
 
07.09.14
13:31
Узел.ПолучитьАтрибут("Seria");
10 КонецЦикла
 
07.09.14
13:33
А, это не атрибут, туплю... узел
11 DES
 
07.09.14
13:34
А как получить Узел.   ?
12 КонецЦикла
 
07.09.14
13:34
Он хоть хмл-нотепадом открывается?
13 DES
 
07.09.14
13:34
набросайте цикл для перебора дерева чтобы получить все значения.
14 DES
 
07.09.14
13:35
да все открывается
15 DES
 
07.09.14
13:37
ВсеУзлы = XMLФайл.ВыбратьУзлы();
Данные = ВсеУзлы.ПолучитьУзел("Seria");
Seria = Данные.ПолучитьАтрибут("Seria");
так что ли ?
а в цикле как ?
16 КонецЦикла
 
07.09.14
13:38
ПолучитьУзел("Seria").Значение ?
ХЗ, пробуй, доку лень искать
17 КонецЦикла
 
07.09.14
13:39
ВыборкаУзлов = КорневойУзел.ВыбратьУзлы("ААА");
Для Сч=0 По ВыборкаУзлов.КоличествоУзлов() - 1 Цикл
   Сообщить(ВыборкаУзлов.ПолучитьУзел(Сч).Значение);
КонецЦикла;
18 DES
 
07.09.14
14:11
сделал
    гXMLАнализатор = СоздатьОбъект("AddIn.XMLParser");
    гФайл = гXMLАнализатор.СоздатьПоследовательноСчитываемыйДокумент();
    гФайл.СвязатьСФайлом("S:\EFISCAL.XML");
    ТипТега = гФайл.Спуститься();
    Пока ТипТега <> 4 Цикл        //    пока не достигнут конец файла
        Если ТипТега <> 1 Тогда
            ТипТега = гФайл.Следующий();
            Продолжить;
        КонецЕсли;                //    пропускаем концы уровней и инструкции
        
        ИмяТега = гФайл.СвойстваТекущегоУзла.Имя;
        
        Если ИмяТега = "Seria" Тогда Ы=1;
            Сообщить("Seria");
        ИначеЕсли ИмяТега = "Документ" Тогда Ц=1;
                                //..........................................................
        Иначе
            ТипТега = гФайл.Спуститься();
            Продолжить;
        КонецЕсли;
          
        ТипТега = гФайл.Следующий();
    КонецЦикла;

в отладчике
ИмяТега = "Seria"
гФайл.СвойстваТекущегоУзла.Имя = "Seria"
гФайл.СвойстваТекущегоУзла.Данные = Ошибка в выражении!
19 DES
 
07.09.14
14:11
Как получить данные из узла ?
20 КонецЦикла
 
07.09.14
14:19
Посмотри в отладчике через вычислить выражение какие есть параметры, свойства, методы
То пробовал?
Ковыряюсь в снеговиках совсем по другой теме, крыша едет, сорри
21 DES
 
07.09.14
14:25
да конечно пробовал... мало того я делал загрузку из XML но там были все значение через знак равно.
22 КонецЦикла
 
07.09.14
14:29
Куйивознает, делай текстом если совсем плохо
23 DES
 
07.09.14
15:00
допетрил кажись
это ограничение v7plus
не может читать значения если они не атрибуты.
24 Aleksey
 
07.09.14
15:10
V7plus какой то странный, у самого не старых машинах работает, на новых (Win8, Win2012) ошибку выдает.
Скорее всего придётся переписывать на что-то типа http://kb.mista.ru/article.php?id=73
25 DES
 
07.09.14
15:31
V7plus ничего не парсит, она лишь прокладка.
Так что смотри что там на машине стоит помимо 1С приблуд
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан