У меня есть XML-документ, который я анализирую с помощью jDOM, а затем пытаюсь взять все узлы, которые удовлетворяют выражению XPath, но XPath всегда не возвращает никаких элементов.Вот мой XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Using aggregate instance. Should pass -->
<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml">
<net id="rootAgregate" type="http://www.cs.stu.cn.ua/jess/enets">
<page id="main">
<transition id="agregate1">
<name>
<text>agregate1</text>
<graphics>
<offset x="22" y="-14"/>
</graphics>
</name>
<definition type="aggregate" subType="myAggregate"/>
<graphics>
<position x="950" y="484"/>
</graphics>
</transition>
<transition id="Input1">
<name>
<text>agregate1</text>
<graphics>
<offset x="22" y="-14"/>
</graphics>
</name>
<definition type="input"/>
<graphics>
<position x="950" y="484"/>
</graphics>
</transition>
<transition id="Output1">
<name>
<text>agregate1</text>
<graphics>
<offset x="22" y="-14"/>
</graphics>
</name>
<definition type="output"/>
<graphics>
<position x="950" y="484"/>
</graphics>
</transition>
</page>
</net>
</pnml>
Вот мой код XPath:
private List<String> getChildNames(Document parsedDom) throws JDOMException {
ArrayList<String> childNames = new ArrayList<String>();
XPath childCounter = XPath.newInstance("//definition[@type=\"aggregate\"]");
ListIterator<Element> listIterator = childCounter.selectNodes(parsedDom).listIterator();
while (listIterator.hasNext()) {
Element definitionElement = listIterator.next();
childNames.add(definitionElement.getAttributeValue("subType"));
}
return childNames;
}
Я проверил здесь свое выражение XPath: http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm, и оно работает.
Почему это не работает в моем коде?
Заранее спасибо.