如何在 Java 中使用 XPath 从 XML 获取特定节点?

How can I fetch specific nodes from XML using XPath in Java?

我的xml文件结构是这样的

<?xml version="1.0" encoding="utf-8" ?>
<book>
    <chapters>
        <chapter id="1">
            <page id="1" cid= "1" bid = "Book1">
                <text>Hi</text>
            </page>
            <page id="2" cid= "1" bid = "Book1">
                <text>Hi</text>
            </page>
        </chapter>
        <chapter id="2">
            <page id="1" cid= "2" bid = "Book1">
                <text>Hi</text>
            </page>
            <page id="2" cid= "2" bid = "Book1">
                <text>Hi</text>
            </page>
        </chapter>
        <chapter id="3">
            <page id="1" cid= "3" bid = "Book1">
                <text>Hi</text>
            </page>
            <page id="2" cid= "3" bid = "Book1">
                <text>Hi</text>
            </page>
        </chapter>
    </chapters>
</book>

我想通过传递页面id章节id来获取具体的页面节点。我怎样才能做到这一点?

另外,书节点包含的章节过多,每章包含很多页。所以,我正在使用 SAX 解析器来解析内容。

"How can I fetch specific nodes from XML using XPath in Java?"

我对 Java 和 Android 不是很熟悉,但是从你的 XML 示例中获取特定 page 的 xpath,传递 page id chapter id 应该看起来像这样:

//chapter[@id='chapter_id_here']/page[@id='page_id_here']

简要说明:

  • //chapter : 在 XML...
  • 中的任意位置查找 chapter 元素
  • [@id='chapter_id_here'] : ...其中 id 属性值等于特定章节 ID
  • /page : 从过滤后的每个 chapter 元素中,找到子元素 page...
  • [@id='page_id_here'] : ...其中 id 属性值等于特定页面 ID

您可以按照这些线程执行 Java 中的 xpath 表达式:How to read XML using XPath in Java, and in Android : Search in XML File with XPath in Android