我需要知道在 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
方法的最后一个参数:请参阅 XPathConstants
类。
关于java - 评估不包括 xml 标记的 XPath 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884010/