Как я могу получить определенные узлы из 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