【问题标题】:Java XPath with XMLUnit 2 and Default Namespace带有 XMLUnit 2 和默认命名空间的 Java XPath
【发布时间】:2016-03-16 05:15:01
【问题描述】:

我在使用 XMLUnit 2.0.0 和默认命名空间编写 XPath 时遇到了问题。这是我的示例 xml:

<a xmlns="uri:foo">
    <b>value</b>
</a>

我无法使用以下 XMLUnit XPath 代码访问任何元素:

XPathEngine engine = new JAXPXPathEngine();
engine.setNamespaceContext(new HashMap<String, String>(1) {{
    put(DEFAULT_NS_PREFIX, "uri:foo");
}});
assertEquals("value", engine.evaluate("/a/b",
             Input.fromString("<a xmlns=\"uri:foo\"><b>value</b></a>").build()));

如何使用默认命名空间使用 XPathEngine/XPath 访问元素?

【问题讨论】:

    标签: java xml xpath xml-namespaces xmlunit-2


    【解决方案1】:

    我找到的答案是在 XPath 中的元素前加上一个 ':'。

    "/:a/:b"
    

    这解决了我的问题。总之,我做了以下事情:

    XPathEngine engine = new JAXPXPathEngine();
    engine.setNamespaceContext(new HashMap<String, String>(1) {{
        put(DEFAULT_NS_PREFIX, "uri:foo");
    }});
    assertEquals("value", engine.evaluate("/:a/:b",
                 Input.fromString("<a xmlns=\"uri:foo\"><b>value</b></a>").build()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-23
      • 2010-10-07
      • 1970-01-01
      • 2012-11-22
      • 2012-10-10
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多