Как я могу получить определенные узлы из XML с помощью XPath в 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. Как я могу достичь этого ?

кроме того, узел книга содержит слишком много глав и каждая глава содержит много страниц. Итак, я использую Sax parser для анализа содержимого.

1 ответов


" как я могу получить определенные узлы из XML с помощью XPath в Java?"

я не очень хорошо знаком с Java и Android, но xpath, чтобы получить конкретные page из вашего образца XML, передавая page id и chapter id должно выглядеть примерно так :

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

краткое описание :

  • //chapter найти chapter элемент в любом месте XML...
  • [@id='chapter_id_here'] : ...где id значение атрибута равняется конкретному идентификатору главы
  • /page: от каждого из отфильтрованных chapter элементы, найти дочерний элемент page...
  • [@id='page_id_here'] : ...где id значение атрибута равно определенному идентификатору страницы

вы можете следовать этим потокам для реализации для выполнения выражения xpath в Java:как читать XML с помощью XPath в Java, а в Android:поиск в XML-файле с XPath в Android