Главная страница
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.04 c
15-1169618650
Бумер2
2007-01-24 09:04
2007.02.18
Бумер2


2-1169894802
LobaS
2007-01-27 13:46
2007.02.18
Освобождение памяти


4-1160074863
electric
2006-10-05 23:01
2007.02.18
HOOK на мышь


15-1170012281
hmmm
2007-01-28 22:24
2007.02.18
http://www.ndw.ru/services/hosting.html


2-1170234910
Beavercrazy
2007-01-31 12:15
2007.02.18
Проблемы переноса из memo в таблицу