![]() |
|
ЧтениеXML как правильно обходить | ☑ | ||
---|---|---|---|---|
0
seraf
30.10.20
✎
04:29
|
Привет, есть у меня хмл-строка, вот её кусок для примера
<d7p1:Property name="Характеристика"> <d7p1:Value xmlns:d12p1="http://v8.1c.ru/8.1/data/enterprise/current-config" xsi:type="d11p1:EnumRef.ВидыДеятельности">Частная</d7p1:Value> </d7p1:Property> ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаХМЛ); Пока ЧтениеXML.Прочитать() Цикл // КонецЦикла; Вопрос, почему обходя её так я у ЧтениеXML не вижу "Характеристика", просто ЧтениеXML.ТипУзла - Начало элемента ЧтениеXML.Имя - d7p1:Property ЧтениеXML.Префикс - d7p1 А у меня этих d7p1 куча, как мне понять что я считываю данные нужного мне узла. Или как к нему непосредственно перейти, ЧтениеXML.ПолучитьАтрибут("Характеристика") не работает. То есть понятно, идут итерации d7p1:Property, d7p1:Value, #text и там моё значение "Частная", но где я в принципе нахожусь в файле не понимаю из свойств ЧтениеXML |
|||
1
hhhh
30.10.20
✎
04:36
|
(0) попробуй через DOM
|
|||
2
Fram
30.10.20
✎
04:45
|
(0) ЧтениеXML.ПолучитьАтрибут("Характеристика")
Характеристика это значение атрибута. А имя атрибута в данном случае - name |
|||
3
seraf
30.10.20
✎
04:49
|
(2) чтениеXML в этом месте вообще опускает name="Характеристика", вижу только начало d7p1:Property
(1)смотрю DOM |
|||
4
seraf
30.10.20
✎
04:55
|
а как его использовать, так не находит
л_ПостроительДОМ = Новый ПостроительDOM; л_ДОМДокумент = л_ПостроительДОМ.Прочитать(ЧтениеXML); л_СписокУзловДокумент = л_ДОМДокумент.ПолучитьЭлементыПоИмени("d7p1:Property name="Характеристика"""); Для каждого л_УзелДокумент Из л_СписокУзловДокумент Цикл Сообщить("1"); КонецЦикла; |
|||
5
youalex
30.10.20
✎
05:03
|
подозрительно похоже на Структуру
А если так попробовать: Чтение = Новый ЧтениеXML; Чтение.УстановитьСтроку(СтрокаXML); Значение = СериализаторXDTO.ПрочитатьXML(Чтение); (4) - name="Характеристика"" это атрибут, попробуй л_ДОМДокумент.ПолучитьЭлементыПоИмени("d7p1:Property"); В 1С, емнип, какой то баг был с неймспейсами еще (это про "d7p1:"), но возможно, только для XPATH |
|||
6
seraf
30.10.20
✎
05:17
|
(5) л_ДОМДокумент.ПолучитьЭлементыПоИмени("d7p1:Property") я по этому не могу искать, так как таких в файле много, нужен конкретный Характеристика
|
|||
7
youalex
30.10.20
✎
06:18
|
Вообще для такого есть
ДокументDOM (DOMDocument) ВычислитьВыражениеXPath (EvaluateXPathExpression) Но как оно работает (если работает) с пространствами имен, я не понимаю. Если ты выпилишь из своего текста все эти "d7p1:" и "xmlns=..." - можно его использовать. еще есть Microsoft.XMLDOM c методом selectNodes(). еще ms sql умеет разбирать xml (удобно, заливаешь xml и дальше работаешь с ним через запросы sql) |
|||
8
rozer76
30.10.20
✎
13:08
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |