我有一个没有任何命名空间的字符串形式的 xml 文档,我想使用 Java、JDOM 和 XPath 对其进行解析,并创建一个对象树。由于 XPAth 总是需要一个前缀和一个命名空间来查询,我将命名空间和前缀添加到根,然后再添加到我想要获取的节点,但是我看到 Xpath 在文档中的每个节点中都需要一个命名空间,但只在根中.
所以一开始有没有办法将命名空间添加到文档对象中的所有元素中,这样我的 xpath 查询才能正确工作?
代码中还应该有其他错误和不好的方法。会很高兴有任何想法。
String response="myXmlString"
ByteArrayInputStream stream = new ByteArrayInputStream(
response.getBytes());
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stream);
org.jdom.Element request=(org.jdom.Element) doc.getRootElement();
request.setNamespace(Namespace.getNamespace("myNamespace"));
createRequest(request);
进而
public Request createRequest(Element requestXML) {
Request request = new Request();
requestXML.detach();
Document doc = new Document(requestXML);
XPath xpath = XPath.newInstance(myExpression);
xpath.addNamespace("m", doc.getRootElement().getNamespaceURI());
xpath.selectSingleNode(doc);
}
最后一行返回空,它不是空的,但它会在里面抛出 jdom 异常。