|
XML и ВычислитьВыражениеXPath | ☑ | ||
---|---|---|---|---|
0
Victor111
25.11.14
✎
16:38
|
Добрый день.
Возник вопрос такой,как получить определенный узел документа XML чтоб перебрать атрибуты? Если написать СтрокаЗапросаXPath="//*" тогда получаю все узлы,а если написать например СтрокаЗапросаXPath="//OTPR" то получаю Неопределено, хоть по идеи должен получить все узлы OTPR где бы они небыли.. Результат = ДокументDOM.ВычислитьВыражениеXPath(СтрокаЗапросаXPath, ДокументDOM, Новый РазыменовательПространствИменDOM(ДокументDOM)); Пока Истина Цикл Узел = Результат.ПолучитьСледующий(); Если Узел = Неопределено Тогда Прервать; КонецЕсли; Для каждого ТекАтр из Узел.Атрибуты Цикл Сообщить("Атрибут: "+ТекАтр.ИмяУзла+", значение: <"+ТекАтр.ЗначениеУзла+">"); КонецЦикла; КонецЦикла; |
|||
1
Лефмихалыч
25.11.14
✎
17:10
|
(0) структур xml-то покажи. Как тебе помочь-то?
|
|||
2
Victor111
25.11.14
✎
21:07
|
(1)
<?xml version="1.0" encoding="utf-8"?> <uz-rwc-doc xmlns="uz:rwc:document:1.2"> <document-data> <uz-rwc-doc> <document-data> <uz-rwc-doc> <document-data> <uz-rwc-doc> <document-data> <uz-rwc-doc> <document-data> <OTPR admin_nazn="**> <CLIENT account="*****" adress="****" bank="Аб "****"" city="***.... /> <CLIENT adress="***" kod="***" name="*** "***" *** "****"" type="*" /> <FROM_TO_LOC lang="de" name_from="***" name_to="****" /> <PL kod_plat="***" name_plat="** "*** "***;" type="0" /> <SHTEMPEL nom_sht="**" info_sht="***" /> <SHTEMPEL nom_sht="**" info_sht="*** "***"" /> <SHTEMPEL nom_sht="***" info_sht="****" /> <SPEC_COND code="**" /> <TEXT create_place="***" name_esr_otpr_real="**" /> <VAGON gruzp="***" kod_adm="**" kol_os="*" nomer="**" rod_vag="**" pr_sobst="*" use="**" ves_tary_arc="*"> <COLLECT_V kod_etsng="***" name_etsng="**" /> </VAGON> <VAGON gruzp="**" kod_adm="**" kol_os="**" nomer="***" rod_vag="**" pr_sobst="**" use="**" ves_tary_arc="*"> <COLLECT_V kod_etsng="**" name_etsng="***" /> </VAGON> </OTPR> </document-data> ............ нужно получить все что лежит в <OTPR......OTPR/> |
|||
3
Victor111
25.11.14
✎
21:12
|
(2) при использовании ДокументDOM все данные в виде дерева и мы можем сразу получать любую ветку насколько я понимаю
|
|||
4
Лефмихалыч
25.11.14
✎
21:25
|
СтрокаЗапросаXPath = ".//OTPR";
или еще СтрокаЗапросаXPath = "/uz-rwc-doc/*/OTPR"; ну и точно прокатит топорный варянт СтрокаЗапросаXPath = "/uz-rwc-doc/document-data/uz-rwc-doc/document-data/uz-rwc-doc/document-data/uz-rwc-doc/document-data/uz-rwc-doc/document-data/OTPR" |
|||
5
Victor111
25.11.14
✎
22:33
|
(4) не срабатывает..
походу не видит или не воспринимает имена узлов "/uz-rwc-doc", чтоб прийти к нужному Может у вас есть ссылка на ресурс где об этом методе можна почитать поподробней? |
|||
6
Jaap Vduul
26.11.14
✎
00:00
|
(2)
Поскольку в xml определено пространство имён, то и запрос xpath должен указывать соответствующий этому пространству контекст(через префикс). Т.е. в вашем случае будет так: Разыменователь = Новый РазыменовательПространствИменDOM("ns", "uz:rwc:document:1.2"); Результат = ДокументDOM.ВычислитьВыражениеXPath(//ns:OTPR, ДокументDOM, Разыменователь); |
|||
7
Victor111
26.11.14
✎
00:49
|
(6) Все получилось)
Спасиба! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |