2017-07-21 6 views
1

Ich las eine Reihe von xmllint Antworten über ähnliche Problem, aber keine schien auf meinen speziellen Fall anwendbar (vielleicht habe ich es verpasst). Wie dem auch sei, ich habe eine folgende XML:xmllint: Holen Sie sich einen Artikel aus einer Liste mit

<?xml version="1.0"?> 
<items> 
    <item> 
    <name>Name 1</name> 
    <value>3</value> 
    </item> 
    <item> 
    <name>Name 2</name> 
    <value>4</value> 
    <othervalue>5</othervalue> 
    </item> 
</items> 

Ich will, um "Wert" von "Punkt" von einem bestimmten Namen, aber wenn ich

xmllint --xpath '//items/item[@name="Name 1"]' test.xml 

eingeben ich:

XPath set is empty 
-:1: parser error : Document is empty 

Ich vermute, weil "Name" ist keine Eigenschaft innerhalb der "Element" -Tag, aber ich bin mir nicht sicher, wie damit umgehen, gibt es eine Möglichkeit, durch Elemente durchlaufen und überprüfen Sie sie für den Namen (mit einem Bash-Skript vielleicht)

+1

@ Daniel Haley, das funktioniert, danke. Kannst du es als Antwort hinzufügen, damit ich akzeptieren kann? – Maxim

Antwort

1

name ist kein Attribut, daher sollte es nicht @ vorangestellt werden (das ist abbreviated syntax für attribute::).

Versuchen:

/items/item[name="Name 1"]/value 
Verwandte Themen