2

I have a given xml structured like this:

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

With SAXReader (DOM4J), how can I get the value contained into the node with id = 1 ('aaa' in the example)?

I've tried this:

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

where elem is the right "path.current", but it didn't work.

Probably I'm writing the condition with a wrong syntax.. suggestions?

lucke84
  • 4,516
  • 3
  • 37
  • 58
  • Note for others: you must quote the attribute value you're looking for, e.g. "val[@id=1]" won't match anything! – Shane Aug 11 '16 at 02:42

2 Answers2

3

The xpath syntax looks fine, but you should use the selectSingleNode method instead.

Node value = elem.selectSingleNode("val[@id='1']/text()");
forty-two
  • 12,204
  • 2
  • 26
  • 36
0

You can try the full XPath: /elem/val[@id='1'] or any parent wildcard //val[@id='1']

Andrew Skiba
  • 103
  • 1
  • 7