I want to query the names of all the persons in the test.xml below.
<body>
<person name="abc"></person>
<person name="def"></person>
<person name="ghi"></person>
</body>
basic query
This has the problem of including "name", which I don't want.
$ xmllint --xpath '//body/person/@name' test.xml`
name="abc"
name="def"
name="ghi"
string function
Using the string function, I only get one result.
$ xmllint --xpath 'string(//body/person/@name)' test.xml
abc
sed and grep
This works but looks needlessly complicated to me.
xmllint --xpath '//body/person/@name' test.xml | grep -o '"([^"]*)"' | sed 's|"||g'
abc
def
ghi
Question
Is it possible to get multiple values without the attribute name and without using another tool like grep?
question from:
https://stackoverflow.com/questions/65936236/how-to-get-attribute-values-of-multiple-nodes-in-xpath-with-just-xmllint 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…