我发现这种查询 XmlObject 以返回包含特定命名空间的元素的方法:

   XmlObject xobj = XmlObject.Factory.parse(
            "<a xmlns='testA'>\n" +
            "  <B:b xmlns:B='testB'>\n" +
            "    <B:x>12345</B:x>\n" +
            "  </B:b>\n" +
            "</a>");

    // Use xpath with namespace delcaration to find <B:b> element.
    XmlObject bobj = xobj.selectPath(
            "declare namespace B='testB'" +
            ".//B:b")[0];

这非常简单,可用于其他命名命名空间,但如何对 默认 命名空间执行相同操作?即 xmlns= 像这样:
   XmlObject xobj = XmlObject.Factory.parse(
            "<a xmlns='testA'>\n" +
            "  <b xmlns='testB'>\n" +
            "    <x>12345</B:x>\n" +
            "  </b>\n" +
            "</a>");

xmlbeans documentation 只指命名空间...有没有办法完成我正在寻找的东西?

最佳答案

我在 Applying XPath to an XML with or without namespace 找到了 XMLBeans 默认命名空间答案。

将其应用于您的示例:

String nsDeclaration = "declare default element namespace 'testB';";
XmlObject bobj = xobj.selectPath(nsDeclaration + ".//b")[0];

关于java - 如何通过 *default* 命名空间 XmlObject.selectPath()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19792820/

10-15 17:40