DOM4J: получить значение фильтрации узла по значению атрибута

У меня есть данный xml, структурированный следующим образом:

<elem>
     <val id="1">aaa</val>
     <val id="2">bbb</val>
</elem>

Как с помощью SAXReader (DOM4J) получить значение, содержащееся в узле с id = 1 (в примере «aaa»)?

Я пробовал это:

String value = elem.element("val[@id='1']")

где elem - правильный "path.current", но это не сработало.

Возможно, я пишу условие с неправильным синтаксисом.. предложения?


person lucke84    schedule 22.03.2011    source источник
comment
Примечание для других: вы должны указать значение атрибута, которое вы ищете, например. val[@id=1] ничего не соответствует!   -  person Shane    schedule 11.08.2016


Ответы (2)


Синтаксис xpath выглядит нормально, но вместо него следует использовать метод selectSingleNode.

Node value = elem.selectSingleNode("val[@id='1']/text()");
person forty-two    schedule 22.03.2011

Вы можете попробовать полный XPath: /elem/val[@id='1'] или любой родительский подстановочный знак //val[@id='1']

person Andrew Skiba    schedule 22.03.2011