|
XML: как определить, составной тег или нет | ☑ | ||
---|---|---|---|---|
0
Антиквар
05.05.14
✎
12:13
|
Всем привет!
Для обработки файла XML использую объект ЧтениеXML, и в цикле: Пока Чтение.Прочитать() Цикл КонецЦикла получаю все элементы. По структуре у меня нет атрибутов, только теги (Начало/конец элемента) и значения (Текст) Как мне, прочитав тег, узнать, является он составным или нет? Причем нужно это сделать, прочитав тип узла "НачалоЭлемента". В синтаксисе ничего не нашел. Вот кол-во атрибутов в начале элемента получить можно, а узнать, составной это тег (т.е. имеет вложенные теги), или простой (после которого будет текст) не получается. Пример: <SCH> <COD>1</COD> <SUMMA>590.56</SUMMA> </SCH> В данном примере SCH - это составной тег, а COD - обычный. И мне надо, прочитав тег SCH понять, составной он или нет. Невозможно? |
|||
1
andreymongol82
05.05.14
✎
12:42
|
ЧтениеХМЛ - это для последовательного доступа. Поэтому никак.
Хотя, конечно можно попробовать через ИмеетЗначение (HasValue), но это уже не по пацански как-то. Лучше ковырять в сторону XTDO-пакетов |
|||
2
Антиквар
05.05.14
✎
12:52
|
(1) Понял, спасибо.
ИмеетЗначение() пробовал, это не то. Возвращает истину только у элемента Текст, а у тега, внутри которого этот текст всё-равно будет уже Ложь. |
|||
3
Антиквар
05.05.14
✎
12:54
|
(1) >> Лучше ковырять в сторону XTDO-пакетов
До этого не дорос :) Нужно срочно делать, а XTDO для меня пока темный лес |
|||
4
andreymongol82
05.05.14
✎
13:03
|
Ну как вариант перегнать всю XML в ДеревоЗначений, а там его уже анализировать.
По XTDO http://infostart.ru/public/167459/ |
|||
5
antoneus
05.05.14
✎
13:04
|
(3) Там не так сложно всё. На ИС есть толковые статьи, я через два часа уже сваял первую выгрузку)
|
|||
6
Антиквар
05.05.14
✎
13:13
|
спасибо всем, нужно будет изучить!
|
|||
7
echo77
05.05.14
✎
14:56
|
Вот простой пример как загрузить через XDTO
ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.ОткрытьФайл(ИмяФайла); Прочитали = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); // Обходим что там начитали Для Каждого Group Из Прочитали.Group Цикл // Ищем/создаем группу ГруппаСсылка = ПолучитьЭлементГруппу("у_КН01", Group.Code, Group.Name, Истина, Справочники.у_КН01.ПустаяСсылка()); // Обходим элементы групп Если Тип(Group.Type) = Тип("ОбъектXDTO") Тогда ЭлементСсылка = ПолучитьЭлементГруппу("у_КН01", Group.Type.Code, Group.Type.Name, Ложь, ГруппаСсылка); ИначеЕсли Тип(Group.Type) = Тип("СписокXDTO") Тогда Для Каждого Type Из Group.Type Цикл ЭлементСсылка = ПолучитьЭлементГруппу("у_КН01", Type.Code, Type.Name, Ложь, ГруппаСсылка); КонецЦикла; Иначе Сообщить("Хз как обрабатывать данный объект с типом " + Тип(Group.Type), СтатусСообщения.Важное); КонецЕсли; КонецЦикла; |
|||
8
Антиквар
05.05.14
✎
16:25
|
(7) А что возвращает ФабрикаXDTO.ПрочитатьXML(ЧтениеXML)?
Цикл по каким элементам потом идет непонятно |
|||
9
ДенисЧ
05.05.14
✎
16:28
|
(8) Продам СП
|
|||
10
Антиквар
05.05.14
✎
18:02
|
(9) СП первым делом посмотрел:
"Описание: Читает элемент данных XDTO указанного типа из объекта чтения XML." Что возвращает не написано. Да ладно, не напрягайтесь, как понадобится разберусь наверное |
|||
11
DS
05.05.14
✎
18:51
|
Между XML и XDTO есть DOM. Как раз то, что нужно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |