Главная страница
    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.051 c
2-1170164148
nordic3
2007-01-30 16:35
2007.02.18
Ole


2-1170335988
DelphiLexx
2007-02-01 16:19
2007.02.18
HtmlHelpViewer рабоет неправильно


2-1170181141
Garacio
2007-01-30 21:19
2007.02.18
ComboBox как в Яндекс


4-1160039736
Михаил И.
2006-10-05 13:15
2007.02.18
Найти процесс


15-1169710131
pasha_golub
2007-01-25 10:28
2007.02.18
Section 508 для программ





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