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

Kri*_*ish 6 java xml xpath android saxparser

我的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>
Run Code Online (Sandbox Code Playgroud)

我希望通过传递页面ID章节ID来获取特定的页面节点.我怎样才能做到这一点?

此外,书籍节点包含太多章节,每章包含许多页面.所以,我正在使用SAX解析器来解析内容.

har*_*r07 3

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

我对 Java 和 Android 不是很熟悉,但是page从 XML 示例中获取特定的 xpath、传递page idchapter id应该如下所示:

//chapter[@id='chapter_id_here']/page[@id='page_id_here']
Run Code Online (Sandbox Code Playgroud)

简要说明 :

  • //chapterchapter:在 XML 中的任意位置查找元素...
  • [@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和 Android 中:Search in XML File with XPath in Android