Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
3-1164626798
Wolf82
2006-11-27 14:26
2007.02.18
Отчет в Делфи


2-1170056377
Kotofeich
2007-01-29 10:39
2007.02.18
запуск броузера


11-1148065780
AndreyRus
2006-05-19 23:09
2007.02.18
KOL&amp;ClearType bug


2-1170281370
Pasha L
2007-02-01 01:09
2007.02.18
прочитать ответ GETа (tidtcpclient)


10-1129625958
Артем Кудлаекно
2005-10-18 12:59
2007.02.18
DCOM. Ошибка: Интерфейс не поддерживается.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский