Имя: Пароль:
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С приблуд