TXMLDocument. Читает со второго атрибута [решено]

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

TXMLDocument. Читает со второго атрибута [решено]

Сообщение KUKA » 10.07.2013 22:26:41

Есть XML - файл
Код: Выделить всё
  <chars count="211">
    <char id="32" x="1021" y="0" width="1" height="1" xoffset="0" yoffset="0" xadvance="18" page="0" chnl="15" />
    ...

Долго не мог словить ошибку, почему значения не те, пока не вывел атрибут отдельно. Мне нужен атрибут id, получаю в качестве 0 атрибута x.

Код: Выделить всё
uses XMLRead, DOM;
var doc : TXMLDocument;
Child: TDOMNode;
begin
   ReadXMLFile(Doc, 'neon.fnt');
   Child := Doc.DocumentElement.FindNode('chars');
   writeln(Child.ChildNodes.item[0].Attributes.Item[0].NodeValue);
   readln();
end.


соответственно выводит 1021, а не 32
Последний раз редактировалось KUKA 13.07.2013 20:00:17, всего редактировалось 1 раз.
KUKA
новенький
 
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Re: TXMLDocument. Читает со второго атрибута

Сообщение Vadim » 11.07.2013 06:03:14

KUKA писал(а):Child.ChildNodes.item[0].Attributes.Item[0].NodeValue

А если попробовать первый item[0] исключить из Вашего кода, что получится?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: TXMLDocument. Читает со второго атрибута

Сообщение Sergei I. Gorelkin » 11.07.2013 07:57:09

Порядок атрибутов в XML не закреплен, парсер может располагать их произвольным образом, добавлять новые атрибуты и иногда удалять существующие. Поэтому нужно читать их только по имени, либо перебирать все.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: TXMLDocument. Читает со второго атрибута

Сообщение KUKA » 11.07.2013 09:29:28

На сайтах freepascal есть какие-нибудь спецификации классов и методов TDOMNode, TXMLRead\Write? Сколько искал есть только мануал. Или это только в исходники лезть?
KUKA
новенький
 
Сообщения: 46
Зарегистрирован: 22.02.2012 20:54:19

Re: TXMLDocument. Читает со второго атрибута

Сообщение Sergei I. Gorelkin » 11.07.2013 09:41:14

Модуль DOM в основном соответствует официальной спецификации W3C: http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113
Ее нет смысла дублировать на сайтах freepascal.
В модулях XMLRead и XMLWrite - по сути, одна процедура...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: TXMLDocument. Читает со второго атрибута

Сообщение vada » 11.07.2013 17:57:47

Ну да. Атрибуты по номерам... это себя не любить. :(
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru