如何使用xpath查找特定类型的所有xml元素?

时间:2013-07-09 06:44:28

标签: java xml xpath dom4j

我有一个定义complexType的XSD(比如说'FooType'),这个类型的几个命名实例分散在同一个XSD中,如:

<sequence>
    <element name="A" type="tns:FooType"/>
    <element name="B" type="tns:FooType"/>
</sequence>

使用从XSD派生的XML文件时,我想找到类型为“tns:FooType”的所有元素节点。我认为这可以使用带有元素(*,“FooType)方法的XPath,但我找不到任何这样的例子,所以不知道语法是什么样的。我希望将它与Java一起使用dom4j selectNodes()方法。

3 个答案:

答案 0 :(得分:1)

您需要XPath 2.0实施。 DOM4J仅为1.0,javax.xml.xpath也是如此。 Saxon提供2.0,但我相信这个特定的功能不是开源版本的一部分。

答案 1 :(得分:0)

试试这个:

List list = document.selectNodes( "/sequence/element[@type='tns:FooType']" );

答案 2 :(得分:0)

如果您不知道前缀,可以在名称上使用substring-before()并检查是否有结果:

/sequence/element[substring-before(@type,":FooType")]