Имя: Пароль:
1C
1С v8
Разделить 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) погляди тут, кажется там был примерчик подобного:

http://help1c.com/