|
Оперделение уровня вложенности тегов при использовании ЧтениеXML | ☑ | ||
---|---|---|---|---|
0
bvb
01.07.14
✎
12:00
|
Читаю XML файл классическим способом :
Пока Чтение.Прочитать() Цикл Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; ЗначениеУзла = Чтение.Значение; Пока Чтение.ПрочитатьАтрибут() Цикл Хочу отобразить прочитанный файл в дереве значений. Проблема том что прочитав узел я не знаю как определить в какие узлы - родители он вложен. Как определить является ли узел корневым или подчинен какому то узлу ? |
|||
1
spectre1978
01.07.14
✎
12:59
|
(0) По-моему, никак. Специальные средства такого рода есть в DOM. ЧтениеXML - это простейшее последовательное чтение, как интерпретировать данные и разбираться с ними - полностью зависит от программиста, никаких дополнительных средств, кроме доступа к текущему прочитанному узлу, не предоставляется.
|
|||
2
anddro
01.07.14
✎
13:06
|
DOM не интересно, фабрика прикольнее:
Читатель = Новый ЧтениеXML; Читатель.ОткрытьФайл(ПолноеИмяФайла); ОбъектДанные = ФабрикаXDTO.ПрочитатьXML(Читатель); Читатель.Закрыть(); //смотреть ОбъектДанные под отладчиком ЗЫ: переименуйте тему |
|||
3
bvb
01.07.14
✎
15:53
|
а можно отослать к источникам где можно подробнее прочитать про DOM модель и фабрику ?
|
|||
4
Serginio1
01.07.14
✎
16:25
|
||||
5
РенеДекарт
01.07.14
✎
16:39
|
(2)>DOM не интересно, фабрика прикольнее
DOM - это именно модель и формат представления данных. Фабрика - просто средство обработки XML. |
|||
6
Separator
01.07.14
✎
16:46
|
(0) предлагаю, все-таки, поправить заголовок. Понимаю, что так лучше отражает состояние под конец рабочего дня :)
Но все же... |
|||
7
Крошка Ру
01.07.14
✎
16:48
|
(6) Не просто "лучше отражает", а "в самую точку", я бы сказал. Предлагаю заголовок оставить.
|
|||
8
Dionisious
01.07.14
✎
16:49
|
А что такого то? рекурсивную функцию написать и все. Сейчас накидаю.
|
|||
9
РенеДекарт
01.07.14
✎
16:50
|
(7) "оперделось" уже все? ))
особенно после мыслереализации функции... :D |
|||
10
Dionisious
01.07.14
✎
16:52
|
Что то типа того:
Процедура XMLВДерево(Файл, Строки) Имя = Файл.ЛокальноеИмя; Пока Файл.Прочитать() Цикл Если (Файл.ЛокальноеИмя = Имя) И (Файл.ТипУзла = ТипУзлаXML.КонецЭлемента) Тогда Прервать; КонецЕсли; Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Строка = Строки.Добавить(); // Заполнить строку дерева XMLВДерево(Файл, Строка.Строки); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
11
Крошка Ру
01.07.14
✎
16:53
|
(9) В отпуск заявление написал, душевное здоровье восстанавливать
|
|||
12
spectre1978
01.07.14
✎
16:54
|
(10) Это все понятно... Более того - для достаточно увесистого XML разбор через SAX, наверное, единственный рабочий вариант. Но вопрос, если я его правильно понял, был про встроенные средства.
|
|||
13
Separator
01.07.14
✎
16:54
|
(7) Согласен, но, тогда, надо слово "от" вторым в заголовок вставить. Точнее будет.
|
|||
14
Масянька
01.07.14
✎
16:56
|
(9) Надеюсь, Catena уже в блокнотик занесла :)))
|
|||
15
РенеДекарт
01.07.14
✎
16:56
|
(12)>для достаточно увесистого XML разбор через SAX
через чего? в 1С "саккс" - это рабочий вариант? ну, где-то близко, да )) |
|||
16
РенеДекарт
01.07.14
✎
16:58
|
(14) там еще другие глубины мыслеобразов есть, Вобланд развивает ))
|
|||
17
spectre1978
02.07.14
✎
10:46
|
(15) SAX это ЧтениеXML
wiki:SAX |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |