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 楼答案
XPath和XML不需要名称空间。返回原始XML并删除代码中的任何名称空间/前缀黑客行为