java - 评估不包括 xml 标记的 XPath 查询

标签 java xml xpath

我需要知道在 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/

相关文章:

java - 如何将字符添加到用户光标所在的 EditText

java - HtmlUnit 选择不在表单中的选项

xml - SVG。将文本置于 <g> 标记内居中

java - com.ibm.ejs.container.EJBConfigurationException : REQUIRED_BINDING_NOT_FOUND for MDB: CIProcessingMDB

java - 反序列化 ArrayList

java - 如何将 JFileChooser 起始目录更改为桌面?

python - Python 中的另一个 unicode 困惑

xml - XSLT 忽略重复元素

java - 使用 Selenium WebDriver Java - css 按钮上传照片

selenium - 需要帮助查找标签旁边输入字段的 xpath