Legen Sie die text-Wert eines Knotens mit xpath
Beispiel-XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Bin ich mit xpath auf meine shell zu versuchen, und ändern Sie den text-Wert eines xml-Knotens. Ich möchte Harry Potter zu Game of Thornes.
xpath test.xml "//bookstore/book/title/text()" 2>/dev/null
Echo aus Harry Potter zu meinem terminal. Jetzt ist es möglich xpath verwenden, um ändern Sie den Wert des Knotens aus Harry Potter zu Game of Thornes?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
XPath selbst kann nicht verwendet werden zum ändern von XML-Dokumenten. Aber die xmlstarlet Befehl Linie Werkzeug kann es tun. Beispiel:
Ausgabe:
Hinweis: ohne
[1]
im Ausdruck, das Ergebnis wäre:Der obige Befehl gibt das Ergebnis auf stdout aus. Es gibt eine option (
-L
oder--inplace
), das ändert das Dokument in Ort:Diese option ist nicht in der Dokumentation erwähnt für xmlstarlet 1.3.1, aber es wird angezeigt, wenn die Ausführung
Soweit ich weiß, XPath selbst kann nicht verwendet werden, da es nur eine Abfrage-Sprache, so dass es nicht für die Erstellung oder änderung von XML-Dateien. Benötigen Sie ein anderes Werkzeug für, die. Wenn Sie in die command line tools, vielleicht Lesen
xsltproc
, das ist ein Teil derlibxslt
. Ich bin nicht ein XSLT Experte, aber ein kurzer Blick auf die verlinkte Seite, gibt mir ein Gefühl, dass man erreichen kann das gewünschte Ergebnis mit<if>
und<value-of>
. Oder Sie könnten das analysieren von XML mit regulären Ausdrücken, aber bitte nicht, ich höre, es ist ein rutschiger Abhang.