я тут потихоньку начал разбираться в XML и инструкциях XPath.
Есть такой XML:
<?xml version="1.0" encoding="WINDOWS-1251"?>
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
<tutorial>
<enimals>
<dogs>
<dogsCaption>Собаки</dogsCaption>
<dogsCaptionName>Кличка</dogsCaptionName>
<dogsCaptionWeight>Вес</dogsCaptionWeight>
<dogsCaptionColor>Цвет</dogsCaptionColor>
<dog>
<dogName>Шарик</dogName>
<dogWeight caption="кг">18</dogWeight>
<dogColor>рыжий с черными подпалинами</dogColor>
</dog>
<dog>
<dogName>Тузик</dogName>
<dogWeight caption="кг">10</dogWeight>
<dogColor>белый с черными пятнами</dogColor>
</dog>
<dog>
<dogName>Бобик</dogName>
<dogWeight caption="кг">2</dogWeight>
<dogColor>бело-серый</dogColor>
</dog>
<dog>
<dogName>Трезор</dogName>
<dogWeight caption="кг">25</dogWeight>
<dogColor>черный</dogColor>
</dog>
</dogs>
</enimals>
</tutorial>
пытаюсь применить к нему
//dog[contains(dogColor, "чер")]
contains('//dog/dogColor', 'чер')
и там еще пару вариантов.
Делал так:
var
Doc : TDOMDocument30;
Int : IXMLDOMDocument2;
List: IXMLDOMNodeList;
Node: IXMLDOMNode;
i : Integer;
begin
Doc := TDOMDocument30.Create(nil);
try
Int := Doc.DefaultInterface;
with Int do
begin
validateOnParse := True;
async := False;
loadXML(Memo1.Text);
List := selectNodes(Memo2.Text);
for i := 0 to List.length-1
do begin
Node := List.item;
Memo3.Lines.Add(Node.text);
end;
end;
finally
Doc.Free;
end;
end;
Пармер msxml пишет мне ошибку "неизвестный метод" (это я про contains)
Думаю, что я вообще неправильно применяю все.
Так какую инструкцию XPath мне нужно применить и как, чтобы получить список всех узлов, у которых dogColor содержит "чер"?
Большое спасибо.
работа с XPath, XML в Delphi
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
----
C уважением,
C уважением,