Главная страница
    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.46 MB
Время: 0.045 c
15-1170075240
frari
2007-01-29 15:54
2007.02.18
Скинуть файл


15-1169624175
chvank
2007-01-24 10:36
2007.02.18
Right click и всё!


2-1170252473
m_a_x
2007-01-31 17:07
2007.02.18
фокусировка в ListBox1


2-1170244505
ACSBaks
2007-01-31 14:55
2007.02.18
Не работает JEDI API Library!!


3-1162115979
аматор
2006-10-29 12:59
2007.02.18
free база





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский