如何通过* default * namespace XmlObject.selectPath()?
我找到了查询XmlObject的方法,以返回包含特定命名空间的元素:
XmlObject xobj = XmlObject.Factory.parse( "\n" + " \n" + " 12345\n" + " \n" + ""); // Use xpath with namespace delcaration to find element. XmlObject bobj = xobj.selectPath( "declare namespace B='testB'" + ".//B:b")[0];
这非常简单,可以用于其他命名的命名空间,但是如何为默认命名空间执行相同操作? 即xmlns=
像这样:
XmlObject xobj = XmlObject.Factory.parse( "\n" + " \n" + " 12345\n" + " \n" + "");
xmlbeans文档仅引用命名的命名空间…有没有办法完成我要找的东西?
我发现在将XPath应用于带或不带命名空间的XML时, XMLBeans默认命名空间应答。
将它应用于您的示例:
String nsDeclaration = "declare default element namespace 'testB';"; XmlObject bobj = xobj.selectPath(nsDeclaration + ".//b")[0];
xml中的命名空间前缀本质上是命名空间uri的别名。 换句话说,名称空间前缀无关紧要 – 只是名称空间URI。 您可以在xpath中声明名称空间前缀,即使它没有出现在xml文档中。 例如,您可以使用xpath中的“B”前缀来引用默认命名空间:
// document using default namespace XmlObject xobj = XmlObject.Factory.parse( "\n" + " \n" + " 12345 \n" + " \n" + ""); // Use xpath with default namespace declaration to find element. XmlObject bobj = xobj.selectPath( "declare namespace B=''; " + ".//B:b")[0];