从命名空间的xpath获取XML值

时间:2014-01-09 08:16:39

标签: java xml xpath

要清楚,我的xml及其XPath是动态的,任何可能的东西,所以没有硬编码值来解析来自XPath的XML值。这是我构建的XML和XPath。

String xml = "<soapenv:Envelope xmlns:com=\"http://com\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header/><soapenv:Body><com:addition><com:a>1</com:a><com:b>1</com:b></com:addition></soapenv:Body></soapenv:Envelope>";
Document doc = UtilityFunction.createXMLDocument(xml);
System.out.println("Value "+XPathFactory.newInstance().newXPath().compile("//soapenv:Envelope[1]/soapenv:Body[1]/com:addition[1]/com:a[1]").evaluate(doc).toString());

空打印。如何使用命名空间从xpath获取XML值。如何在编译中启用命名空间。

1 个答案:

答案 0 :(得分:0)

XPathFactory.newXPath()会返回XPath个对象。

创建一个NamespaceContext对象,将其设置为知道您的命名空间绑定,并在.setNamespaceContext()对象上调用XPath

然后编译XPath并像往常一样调用。

(我认为在右边的一些“相关”问题中给出了重复的答案,所以我不会给出代码样本。这很简单。)