有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaXPath返回空元素对象

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

  1. # 1 楼答案

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