Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从具有命名空间的xpath获取XML值_Java_Xml_Xpath - Fatal编程技术网

Java 从具有命名空间的xpath获取XML值

Java 从具有命名空间的xpath获取XML值,java,xml,xpath,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:ad

要明确的是,我的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());
stringxml=“11”;
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值。如何在编译中启用命名空间。

XPathFactory.newXPath()返回一个对象

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

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


(我假设这重复了右侧一些“相关”问题中给出的答案,因此我不打算给出代码示例。这很简单。)

是否可能重复XPathFactory所属的库?是JDOM2吗?javax.xml.xpath.XPathFactory工厂