Страница 1 из 1

чтение XML файла ..

Добавлено: 02 мар 2011, 15:13
Masygreen
Дня доброго!
ни как не разберусь с чтением XML.. на форуме была тема но там совсем туманно...
сабж - имеем xml

Код: Выделить всё

<root>
<fileversion>00_11</fileversion>
</root>
читаю (из кода убрал проверки типа if(hRoot=0) - чтоб в экраны влезло )

Код: Выделить всё

 var xDom,hRoot,hNodeList,hNodeItem  : LongInt;
 var hNodeCount,i:integer; 
 xDom := XMLDOMDoc_New;
 XMLDOMDoc_Load(xDom,FileName);//пробуем открыть файл XML
 hRoot := XMLDOMDoc_DocumentElement(xDom);//получаем корневой элемент
 hNodeList := XMLDOMNode_Get_ChildNodes(hRoot);//получаем child корневого элемента и идем по ним циклом
 hNodeCount := XMLDOMNodeList_Get_Length(hNodeList);
 for ( i := 0; i < hNodeCount; i := i + 1 )
  {
       hNodeItem:=XMLDOMNodeList_Get_Item(hNodeList, i);
       message(XMLDOMNode_get_NodeType(hNodeItem)+'=='+XMLDOMNode_Get_NodeName(hNodeItem));
       message(XMLDOMAttribute_get_NodeValue(hNodeItem));
  }
тип и имя элемента получаю прекрасно
на получении значения вылетаю рантаймом

Код: Выделить всё

 message(XMLDOMAttribute_get_NodeValue(hNodeItem));

Re: чтение XML файла ..

Добавлено: 02 мар 2011, 15:21
Masygreen
при этом по имени функции XMLDOMAttribute_get_NodeValue она и не должна брать значение элемента, а должна брать значение атрибута(что она прекрасно делает), но в XMLDOMFunc.pas другой подходящей функции нет :(

Re: чтение XML файла ..

Добавлено: 02 мар 2011, 17:44
Vik
Тоже в свое время не нашел нужной функции. Создать можно подобную структуру, а прочитать как, непонятно. Да и если посмотреть какие xml используются в галактике - везде только атрибуты или CDATA. Создается впечатление, что существующий функционал просто не позволяет прочитать такую xml. Можно попробовать использовать парсер Microsoft XML. Как-то даже ради интереса сгенерировал объектные фейсы, но потом отвлекся и больше руки не дошли