2013-07-09 39 views
1

我有一个定义复杂类型的XSD(说“FooType”),和几个这种类型的命名实例分散在同一XSD,如:如何使用xpath查找特定类型的所有xml元素?

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

当从XSD导出XML文件的工作,我想查找类型为“tns:FooType”的所有元素节点。我认为使用带有元素(*,“FooType)方法的XPath是可能的,但是我找不到任何这样的例子,所以不知道语法是什么样子。我希望将它用于Java 。DOM4J的selectNodes()方法

回答

1

您需要一个XPath 2.0实现DOM4J为1.0只,所以是javax.xml.xpath的撒克逊人提供了2.0,但我相信这个特定的。能力不是开源版本的一部分

0

试试这个:

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

我认为你的建议可以从XSD中选择。我需要从XSD派生的XML中选择一些内容。 –

0

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

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