2

我在使用 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 访问元素?

4

1 回答 1

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()));
于 2016-03-15T21:15:01.397 回答