Форум: "Прочее";
Текущий архив: 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&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&MM_extramarital_son (2007-01-26 14:34) [5]парсить надо xml.
а "это" по определению xml"ем не является и являться не может.
← →
JFK&MM_extramarital_son (2007-01-26 14:38) [6]на самом деле это не тег, а просто кто-то додумался такое имя ввести) Что делать-то в таком случае?
Кто-то додумался ввести такое имя и был прав.
А кто-то другой додумался формировать xml документ руками, забив на все спецификации. После чего пытается прочесть это не руками, а нормальным парсером.
Криво пишешь руками - руками же и разбирай. Либо соблюдай требования к содержимому тегов
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c