Получить конкретные XML-значения с помощью конфигурации Commons

Допустим, у нас есть следующий XML:

<root>
    <sub>
        <id>1</id>
        <values>
            <value>1</value>
            <value>2</value>
        </values>
    </sub>
    <sub>
        <id>2</id>
        <values>
            <value>16</value>
            <value>15</value> 
        </values>
    </sub>
</root>

Что я хочу с конфигурацией Apache Commons: я хочу получить все значения для sub с id2. Как я мог этого достичь? Я ничего не нахожу в документации, как я могу запросить с динамическим номером иерархии.

2 ответа

Решение

Вы можете использовать XPath:

//sub[id = 2]/values/value

// часто приводит к медленному выполнению (вызывает поиск всего (под) дерева XML).

Используйте:

/*/sub[id = 2]/values/value

Это выбирает любой value элемент, который является потомком values элемент, который является потомком sub элемент которого id ребенок имеет строковое значение "2"и что (sub) является дочерним элементом верхнего элемента документа XML.

Другие вопросы по тегам