Текущий архив: 2011.04.17;
Скачать: CL | DM;
Вниз
помогите составить XPath выражение Найти похожие ветки
← →
delphist (2011-01-17 12:17) [0]Есть xml-файл примерно следующего содержания:
<brands>
<cadillac>
</cadillac>
<hummer>
</hummer>
<infiniti>
</infiniti>
<jaguar>
</jaguar>
<lexus>
</lexus>
</brands>
Пишу XPath-выражениеCarsXML.selectNodes("brands/*");
- выбираются все подузлы узла brands, а как указать, чтобы в выбор попадали определенные подузлы, например cadillac, infiniti, jaguar.
← →
Медвежонок ХМЛ © (2011-01-17 12:59) [1]"/brands/*[(name()="cadillac") or (name()="infiniti") or (name()="jaguar")]"
← →
delphist (2011-01-17 13:03) [2]пробовал такой вариант, почему-то ругается на name() - неизвестный метод.
← →
han_malign (2011-01-17 13:04) [3]http://www.zvon.org/xxl/XPathTutorial/General_rus/examples.html
примеры 8, 10
← →
Медвежонок ХМЛ © (2011-01-17 13:05) [4]SetProperty("SelectionLanguage","XPath")
← →
delphist (2011-01-17 13:09) [5]чей это метод? в IXMLDOMDocument такого нет.
← →
Медвежонок ХМЛ © (2011-01-17 13:22) [6]зато есть в IXMLDOMDocument2
← →
delphist (2011-01-17 13:26) [7]Спасибо, уже нашел. Уточню только, проблем из-за SetProperty("SelectionLanguage","XPath") не возникнет, просто раньше юзал только IXMLDOMDocument.
← →
delphist (2011-01-17 16:01) [8]а если мне нужно вывести все подузлы brands имеет ли смысл использовать XPath или же корректнее обойтись без него, Например, для нижеописанного метода как лучше:
procedure TCarsData.Prepare(ACarsXML: IXMLDOMDocument);
var
I: Integer;
begin
with ACarsXML.documentElement do
for I := 0 to childNodes.length - 1 do
begin
Cur := childNodes[I];
if PrepareNeeded(Cur) then
DoPrepare(Cur);
end;
end;
procedure TCarsData.Prepare(ACarsXML: IXMLDOMDocument);
var
I: Integer;
begin
with ACarsXML.selectNodes("/brands/*") do
for I := 0 to length - 1 do
begin
Cur := item[I];
if PrepareNeeded(Cur) then
DoPrepare(Cur);
end;
end;
Страницы: 1 вся ветка
Текущий архив: 2011.04.17;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.003 c