Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

xml


vasa ©   (2012-02-17 16:57:00) 

подскажите, как при помоши TXmlDocumet выдрать параметр ZZZ из вот такого xml:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<DECLARATIONS>
 <DECLGROUP>
   <VALUE.OBJECT>
<INSTANCE CLASSNAME="XXX">
<PROPERTY NAME="Caption" TYPE="string"><VALUE>ZZZ</VALUE></PROPERTY>
</INSTANCE>
</VALUE.OBJECT>

Delphi Xe2

...
var
Node: IXMLNode;
begin
memo1.Clear;
Node := XML1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0];
Memo1.Lines.Add(Node.NodeName);
Memo1.Lines.Add(Node.ChildValues['NAME']);

???

т.е. надо получить Caption


vasa   (2012-02-17 19:24:00) [1]


> Медвежонок Пятачок ©   (17.02.12 18:06) [4]


а почему там регистр важен? :(
а если заранее ключи неизвестны?


Медвежонок Пятачок   (2012-02-17 18:19:00) [2]

ну естественно проперти.
а ты чего хотел от четвертого потомка рутового узла?


vasa   (2012-02-17 18:17:00) [3]

а это //Memo1.Lines.Add(Node.Attributes['NAME']); показывает Caption


vasa   (2012-02-17 18:16:00) [4]

но вот это же Memo1.Lines.Add(Node.NodeName); показывет PROPERTY ...


Медвежонок Пятачок   (2012-02-17 18:14:00) [5]

куда-то очень рядом показывает :-)


знайка   (2012-02-17 18:10:00) [6]


> XML1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0].
> ChildNodes[0]
Это куда по вашему указывает?


Медвежонок Пятачок   (2012-02-17 18:09:00) [7]

если сложно икспас, то поупражняйся в арифметике, подсчитывая количество и порядок чайлдов


vasa   (2012-02-17 18:07:00) [8]

xpath слишком сложно.

попробовал так, но zzz все равно не показывает

Node := XML1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0].ChildNodes[0];
Memo1.Lines.Add(Node.NodeName);
//Memo1.Lines.Add(Node.Attributes['NAME']);
Memo1.Lines.Add(vartostr(node.Text));


Медвежонок Пятачок   (2012-02-17 18:06:00) [9]

/declaration/declgroup/value.object/instanse/property[@name="caption"]/value

и соблюсти регистр.
только не тхмлдокумент, а ixmldomdocument2


vasa   (2012-02-17 17:38:00) [10]

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<DECLARATIONS>
 <DECLGROUP>
   <VALUE.OBJECT>
<INSTANCE CLASSNAME="XXX">
<PROPERTY NAME="Caption" TYPE="string"><VALUE>ZZZ</VALUE></PROPERTY></INSTANCE>
</VALUE.OBJECT>
 </DECLGROUP>
</DECLARATIONS>

в конце не добавил


знайка   (2012-02-17 17:26:00) [11]

Надо понимать разницу в понятиях елемента и его атрибута.
NAME тут это атрибут.
И откройте для себя xpath.


sniknik   (2012-02-17 17:08:00) [12]

> вот такого xml:
это не xml, набор строк -

Ошибка синтаксического анализа XML: элемент не найден
Строка 8, символ 16:</VALUE.OBJECT>


Наверх

Титульная страница Поиск, карта сайта Написать письмо