|
Разделить XML на элементы |
☑ |
0
Bugmenot
05.12.12
✎
16:12
|
Подскажите, если простой способ и XML примерно такого вида:
<root>
<item> ... куча вложенных узлов ... </item>
<item> ... куча вложенных узлов ... </item>
</root>
Получить следующее:
Элемент1 = "<item> ... куча вложенных узлов ... </item>";
Элемент2 = "<item> ... куча вложенных узлов ... </item>";
|
|
1
Buster007
05.12.12
✎
16:16
|
можно попробовать сделать xsd-схему...)
|
|
2
Defender aka LINN
05.12.12
✎
16:20
|
(1) И?
(0) Для нафига?
|
|
3
Staffa
05.12.12
✎
16:27
|
(0) как-то так:
ДомДокумент = Новый COMОбъект("Msxml2.DOMDocument.6.0");
...
ВыбранныеУзлы = ДомДокумент.SelectNodes("/Root/Item/");
Для Инд = 0 По ВыбранныеУзлы.Length - 1 Цикл
ТекУзел = ВыбранныеУзлы.Item(Инд);
...
КонецЦикла;
У ТекУзел будет свойство XML - где будет содержимое всего этого узла.
|
|
4
Bugmenot
05.12.12
✎
16:29
|
(2) Пытаюсь обойти баг
Фабрика = СоздатьФабрикуXDTO(Схема);
ХМЛ = Новый ЧтениеXML;
ХМЛ.ОткрытьФайл(Файл);
Пока ХМЛ.Прочитать() Цикл
Если ХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента И ХМЛ.Имя = "item" Тогда
Элемент = Фабрика.ПрочитатьXML(ХМЛ,ЭлементТип);
КонецЕсли;
КонецЦикла;
Фабрика.ПрочитатьXML скидывает текущую позицию ЧтенияXML на первый подчиненный узел СЛЕДУЮЩЕГО item-а. А не на его "начало элемента", как можно было бы ожидать.
|
|
5
Bugmenot
05.12.12
✎
16:30
|
+ Ну и из-за этого элементы читаются через один.
|
|
6
х86
05.12.12
✎
16:30
|
(4)рекурсия + считай уровни
|
|
7
Bugmenot
05.12.12
✎
16:31
|
(3) Ок, как вариант принято. Но хотелось бы штатными средствами... Почему у 1С-го DOM-а нет такого свойства? )
|
|
8
Staffa
05.12.12
✎
16:36
|
(7) вот уж хз, на курсах вроде говорили, что он использует штатный XMLпарсер, но не до конца, типа работа с XML у 1С еще в разработке =)
|
|
9
Defender aka LINN
05.12.12
✎
16:39
|
(4) Дык убери Пока ХМЛ.Прочитать() Цикл, и делай Прочитать() только в начале файла
|
|
10
Bugmenot
05.12.12
✎
16:45
|
(9) Мне нужно из всех элементов xml-ки сформировать объекты фабрикой, их там много. Нужно либо ЧтениеXML позиционировать на начало каждого элемента и делать Фабрика.ПрочитатьXML или скармливать фабрике элементы предварительно их выделяя из всего текста xml.
|
|
11
mzelensky
05.12.12
✎
16:48
|
(0) погляди тут, кажется там был примерчик подобного:
|
|