![]() |
![]() |
![]() |
|
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С приблуд |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |