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

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

Как правильно разбирать xml? [D7, XP]


vegarulez ©   (2009-02-12 09:18:00) 

Доброго времени суток всем мастерам!

У меня при разборе xml вызывает вопрос, как правильно выделить элементы, помеченные жирными присвояемые им значения курсивным текстомтекстом?
Для выделения Node использую

 List := Node.getElementsByTagName('a');
 memo2.Lines.Append(List.Item[0].Text);


а вот как выделить и прочесть (не знаю как правильно это называется содержимое, или дочерние элементы - те которые выделены жирным текстом, и курсивом) эти значения - не знаю - подскажите.

<response Timeout="60">
 <a>10</a>
 <id>13</id>
 <plt st="1600" trn="123456789" result="13" fs="true">
   <ex name="tracert">10.46.33.33</ex>
   <to>
     <sid>2</sid>
   </to>
 </plt>
 <ex name="B">0.00</ex>
 <ex name="O">-10000.00</ex>
</response>


  (2009-03-25 08:45:00) [1]

Удалено модератором


  (2009-03-25 08:45:00) [2]

Удалено модератором


Медвежонок Пятачок   (2009-02-16 14:00:00) [3]

к IXMLDomDocument2 или его ноду.
зависит от конкретного XPath


vegarulez   (2009-02-16 13:58:00) [4]

Медвежонок Пятачок ©   (16.02.09 13:52) [5]

это метод к какому из объектов?


Медвежонок Пятачок   (2009-02-16 13:52:00) [5]

SelectSingleNode(/plt[его_индекс]/ex/@name)


vegarulez   (2009-02-16 13:48:00) [6]

ок... пробую...так и не понял как с помощью

var
 objXMLDoc : IXMLDOMDocument;
 Node, Part : IXMLDOMElement;
 List,ListPrinc : IXMLDOMNodeList;


добится до атрибутов?
там  Item`y нужен на входе integer (Node.attributes. item[]).

Порылся в инете нашёл

var

 XMLDocument1 : TXMLDocument;


Хотя в той статье советуют вместо TXMLDocumentиспользовать IXMLDocument
их столько много, что не понятно чем они вообще кардинально отличаются?...
IXMLDOMDocument;
IXMLDocument ;
TXMLDocument;


сделал вот так:

 XMLDocument1:= TXMLDocument.Create(Application);
 XMLDocument1.XML.Text:=memo1.Text;
 XMLDocument1.Active := true;
 memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.Attributes['Timeout'])) ;
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildValues['a']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildValues['id']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Attri butes['st']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Attri butes['trn']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Attri butes['result']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Attri butes['fs']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Child Values['ex']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Child Nodes['ex'].Attributes['name']));
memo2.Lines.Append(VarToStr(XMLDocument1.DocumentElement.ChildNodes['plt'].Child Nodes['to'].ChildValues['sid']));

 XMLDocument1.Active := false;
 XMLDocument1.Free;


Теперь возникает вопрос как прочесть 2 последних значения + 2 последних атрибута??? потому как название узла и название атрибута одинаковые (ex и name) в обоих случаях.


vegarulez   (2009-02-12 09:26:00) [7]

Ок. Псп. Попробую.


Сергей М.   (2009-02-12 09:22:00) [8]


> не знаю как правильно это называется


Атрибутыэто называется.
Соотв-но для доступа пользуй методы, в которых фигурирует слово "атрибут"


Сергей М.   (2009-02-12 09:22:00) [9]

http://www.gotdotnet.ru/Forums/XML/407029.aspx


Наверх

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