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