如何提取XPath指向的所有值?

red*_*vil 1 java xml xpath vtd-xml

我有以下xml

<test>
    <nodeA>
           <nodeB>key</nodeB>
           <nodeC>value1</nodeC>
    </nodeA>
    <nodeA>
           <nodeB>key</nodeB>
           <nodeC>value2</nodeC>
    </nodeA>
</test>
Run Code Online (Sandbox Code Playgroud)

如何连接并获取xpath中的所有值/test/nodeA/nodeC?我在这种情况下的预期输出是value1value2

我不确定从我读过的内容可以用xpath,但谢谢你的帮助.

PS:我使用Ximpleware的VTD-XML在Java中解析它.任何基于Java的解决方案也欢迎.目前我的java解决方案只提供第一个值,即value1

sh0*_*0ru 5

XPath将返回一个NodeList可以迭代和连接的东西:

StringBuilder concatenated = new StringBuilder():
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/test/nodeA/nodeC/text()";
InputSource inputSource = new InputSource("sample.xml");
NodeList nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);
for(int i = 0; i < nodes.getLength(); i++) {
    concatenated.append(nodes.item(i).getTextContent());
}
Run Code Online (Sandbox Code Playgroud)