If I selected an element using XPATH how can I get its name?
I mean something like text() function in //element/[@id=elid]/text().
Asked
Active
Viewed 1.1e+01k times
39
Ariyan
- 14,760
- 31
- 112
- 175
2 Answers
73
Use name(). (Find docs for newer versions of the XPath language here.)
Here are modified versions of your example:
Works in XPath 2.0+ only:
//element/*[@id='elid']/name()
Works in XPath 1.0 and 2.0+*:
name(//element/*[@id='elid'])
*If using 2.0+, the expression //element/*[@id='elid'] must only return one element. Otherwise you'll get an error like A sequence of more than one item is not allowed as the first argument of fn:name()
You could also use local-name() which returns the local part of the expanded name (without any namespace prefix).
Daniel Haley
- 51,389
- 6
- 69
- 95
2
The tag names tree can also be obtained with
echo "du //Element/*" | xmllint --shell response-02.xml
Ele1
id
name
Nested1
id
name
Ele2
LMC
- 10,453
- 2
- 27
- 52