|
|
|
Как в 8-ке считывать XML - файл | ☑ | ||
|---|---|---|---|---|
|
0
fixin
16.02.05
✎
18:12
|
Я попробовал
ВнДокумент=Новый ЧтениеXML; ВнДокумент.ОткрытьФайл(ИмяФайла); Пока ВнДокумент.Прочитать() Цикл ИмяУзла = ВнДокумент.ЛокальноеИмя; ТипУзла = ВнДокумент.ТипУзла; ОбработкаПрерыванияПользователя(); Сообщить(ИмяУзла); КонецЦикла; Но этот код перебирает все узлы... А мен нужно например чтобы он перебирал внешние узлы, затем внутренние, т.е. по дереву XML |
|||
|
1
француз
16.02.05
✎
19:47
|
Пока Прочить() Цикл
ПрочитьАтрибут(нужныйАтрибут) КОнецЦикла.. сей шаблон работает с Хмл выгрузкой из 77 |
|||
|
2
Лошадка в пальто
16.02.05
✎
19:50
|
(1)В Пока Прочить() Цикл ошибка... Там для фиксина нужно первую букву изменить...
|
|||
|
3
француз
16.02.05
✎
19:56
|
))))))
|
|||
|
4
fixin
17.02.05
✎
09:52
|
Не я хочу так - перебираю все узлы родительские, потом вложенный цикл по дочерним.
|
|||
|
5
француз
17.02.05
✎
10:11
|
какой привередливый, аднако..
Пока ПрочитатьАтрибут() цикл. |
|||
|
6
fixin
17.02.05
✎
10:24
|
Блин все не то.
Есть узел Данные знд=1 Свойство зн=1 /Свойство Свойство зн=2 /Свойство Свойство зн=3 /Свойство /Данные Данные знд=2 Свойство зн=1 /Свойство Свойство зн=2 /Свойство Свойство зн=3 /Свойство /Данные Как мне перебрать только узлы Данные, не спускаясь на узлы Свойство? |
|||
|
7
fixin
17.02.05
✎
10:28
|
(5) Неужели он читает все узлы последовательно, не так как в В7Плюс.длл ???
Блин... |
|||
|
8
француз
17.02.05
✎
11:13
|
определяйся в желаниях..
в (4) в семь хочеш последовательный доступ в (7) произвольный.. что именно тебе нужно? |
|||
|
9
француз
17.02.05
✎
11:14
|
+(8) читать в "(4) хочеш последовательный доступ"
|
|||
|
10
fixin
17.02.05
✎
11:19
|
Короче я хочу перебрать узлы верхнего уровня, в данном случае Данные, не тратя время на перебор узлов Свойство. Как это сделать? Или пусть тратя но как перебрать, блин.
|
|||
|
11
fixin
17.02.05
✎
14:32
|
Короче, я нашел, что оберток для DOM модели нет, нужно через КОМ-объект DOMDocument работать. В официальной методичке 1С.
|
|||
|
12
француз
17.02.05
✎
14:34
|
впечатляет..
|
|||
|
13
fixin
18.02.05
✎
18:42
|
Функция СоздатьОбъектXMLDOM() Экспорт
Перем Объект; Попытка Объект=Новый COMОбъект("Msxml2.DOMDocument.4.0"); Исключение Попытка Объект=Новый COMОбъект("Msxml2.DOMDocument.3.0"); Исключение Сообщить("Ошибка при создании COM-объекта Msxml2.DOMDocument - возможно отсутствует парсер XML"); Возврат 0; КонецПопытки; КонецПопытки; Возврат Объект; КонецФункции XMLDoc=СоздатьОбъектXMLDOM(); Если ВнДОкумент=0 Тогда Возврат ложь; КонецЕсли; ОтношенияСоздать(); Если НЕ XMLDoc.Load(ИмяФайла) Тогда Возврат ложь; КонецЕсли; XMLDoc.SetProperty("SelectionLanguage","XPath"); УзКорень=XMLDoc.DocumentElement; //УзОтношенияСписок=УзКорень.SelectNodes("//*[name()='Data']"); Для ИндКор=1 По УзКорень.childNodes.Length Цикл УзОтношение=УзКорень.childNodes.item(ИндКор-1); Если УзОтношение.BaseName="Data" Тогда Возврат ОтношенияЗагрузить(УзОтношение); КонецЕсли; КонецЦикла; //Dim docXML As MSXML2.DOMDocument30 //docXML.documentElement.childNodes(idx) //где idx - номер узла //docXML.documentElement.childNodes.length - кол-во узлов //начальный индекс 0 //docXML.documentElement.childNodes(0).attributes.getNamedItem("name_attr").nodeValue //ХМЛ= СоздатьОбъект("MSXML2.DOMDocument"); //ХМЛ.Load(ФайлЗагрузки); //ХМЛ.SetProperty("SelectionLanguage","XPath"); //Корешок=ХМЛ.DocumentElement; //Справ = Корешок.SelectNodes("//*[name()='Справочник']"); //Рек = Корешок.SelectNodes("//*[name()='Реквизит']"); //Для к=0 По (Справ.Length - 1) Цикл // Сообщить(Справ.Item(к).GetAttribute("Наименование")); // Для у=0 По (Рек.Length - 1) Цикл // Сообщить(Рек.Item(у).GetAttribute("Наименование")); // КонецЦикла; //КонецЦикла Короче, кому надо, в ДОМ по этому примеру разберетца. Вопрос закрыт. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |