Xpath返回空元素对象

时间:2011-05-01 10:46:45

标签: java xpath jdom

我有一个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);

}

这最后一行返回空,它不是null但它会抛出jdom异常。

1 个答案:

答案 0 :(得分:1)

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