![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно разбирать 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