0

我有一个没有任何命名空间的字符串形式的 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 异常。

4

1 回答 1

1

XPath 和 XML 不需要命名空间。返回到您的原始 XML 并删除代码中的任何命名空间/前缀骇客。

于 2011-05-01T10:58:40.657 回答