Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

SimpleXML.pas   Найти похожие ветки 

 
AntonSimenko   (2007-01-26 11:21) [0]

Здравствуйте.
Необходимо мне разобрать некоторую xml-подобную информацию.
Формат такой:
<user>
 <id>1109</id>
 <type>Local</type>
 ...
</user>


Решил взять SimpleXML.pas, что бы использовать его. Но вот что-то особо примеров применения я его не нашел. И поэтому, может кто сталкивался, знает, применял...

Допустим в Source -- моя информация.

var
 Xml: IXmlDocument;
 XmlElem: IXmlNode;

 Xml := CreateXmlDocument;
 Xml.LoadXML(Source);

 XmlElem := Xml.DocumentElement.SelectSingleNode("type");
 ShowMessage(XmlElem.Text);


Но если вдруг такая ситуация, что <type> отсутствует в документе, возникает AV на ShowMessage. Отсюда вопрос, каким образом проверять наличие прежде считывания из тега?


 
JFK&amp;MM_extramarital_son   (2007-01-26 12:16) [1]

проверять результат селекта на nil естественно


 
AntonSimenko   (2007-01-26 14:19) [2]

Да, действительно. Спасибо! Совсем я что-то идиотом стал.
Ещё один у меня вопрос родился, в ходе использования.

Получается ошибка в программе, если данные содержат такую информацию:
<user>
<id>1109</id>
<type>Local</type>
<username><superuser></username>
...
</user>


Ошибка "Ожидается superuser". т.е он данный текст рассматривает, как не закрытый тег. (на самом деле это не тег, а просто кто-то додумался такое имя ввести) Что делать-то в таком случае? Вроде считываю же текст XmlElem.Text, а он такое вытворяет. Есть идеи?


 
pyJIoH ©   (2007-01-26 14:26) [3]

2 AntonSimenko [2]
Имя ввести где? Для парсера это именно не закрытый тег. Или вводите имя как тест узла <username>superuser</username> или как аттрибут <username name="superuser"/>


 
AntonSimenko   (2007-01-26 14:31) [4]

Сейчас уже ничего не сделаю, задача именно парсить это, а не менять структуру при записи.


 
JFK&amp;MM_extramarital_son   (2007-01-26 14:34) [5]

парсить надо xml.
а "это" по определению xml"ем  не является и являться не может.


 
JFK&amp;MM_extramarital_son   (2007-01-26 14:38) [6]

на самом деле это не тег, а просто кто-то додумался такое имя ввести) Что делать-то в таком случае?

Кто-то додумался ввести такое имя и был прав.
А кто-то другой додумался формировать xml документ руками, забив на все спецификации. После чего пытается прочесть это не руками, а нормальным парсером.
Криво пишешь руками - руками же и разбирай. Либо соблюдай требования к содержимому тегов



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.092 c
2-1170336039
Lera
2007-02-01 16:20
2007.02.18
Наличие файла


2-1170270359
Bagos
2007-01-31 22:05
2007.02.18
beep при OnKeyDown


2-1170354770
Jeeb
2007-02-01 21:32
2007.02.18
Номенклатурная база данных


2-1170328443
Extar
2007-02-01 14:14
2007.02.18
Диалог выбора каталога человеческий как организовать?


2-1170245548
Beavercrazy
2007-01-31 15:12
2007.02.18
Закачать файл на FTP сервер