我有使用jDOM解析的XML文档,然后尝试获取满足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 它的工作原理。
为什么它在我的代码中不起作用?
提前谢谢你。
答案 0 :(得分:2)