我需要知道是否可以在Java中使用XPath来获取查询结果中的XML片段。我会更好地解释,我正在工作这个简单的XML文件:
<bookshelf>
<shelf>
<book>
<author>J.R.R. Tolkien</author>
<title>The Lord of the Rings</title>
</book>
</shelf>
</bookshelf>
我必须评估的查询XPath是:/bookshelf/shelf/book
。
我需要找到一种方法来将XML标记保留在XPATH响应中,以得到如下所示的结果:
<author>J.R.R. Tolkien</author>
<title>The Lord of the Rings</title>
有可能做到吗?
是的,可以使用标准的Java XPath API:
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class Snippet {
public static void main(String[] args) throws Exception {
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) xpath.evaluate("/bookshelf/shelf/book/*",
new InputSource(Snippet.class.getResourceAsStream("/books.xml")),
XPathConstants.NODESET);
System.out.println("First node: " + nodes.item(0));
System.out.println("Second node: " + nodes.item(1));
}
}
您可以要求XPath API返回节点列表,单个节点,字符串等evaluate
。为此,请使用方法的最后一个参数:see XPathConstants
class。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句