2017-09-24 5 views
1

Ich bin neu mit xmlstarlet. Ich würde gerne wissen, wie man den Wert des XML-Knotens mit xmlstarlet ändert.xmlstarlet xml node value ersetzen

Ich habe etwas versucht. xmlstarlet ed --inplace -u '/ file_input/uri' 'Zeichenfolge ("s3: // my_source")' template.xml> output.xml

funktioniert nicht.

Meine erwartete Ausgabe als s3: // my_source und s3: // mydestination. Ich möchte source_path und Zielpfad Knoten ändern.

<?xml version="1.0" encoding="UTF-8"?> 
<job version="2.10.8"> 
    <input> 
    <deblock_enable>Auto</deblock_enable> 
    <deblock_strength>0</deblock_strength> 
    <no_psi>false</no_psi> 
    <order>1</order> 
    <timecode_source>zerobased</timecode_source> 
    <file_input> 
     <certificate_file nil="true"/> 
     <password>upass</password> 
     <uri>source_path</uri> 
     <username>uname</username> 
    </file_input> 
    <file_group_settings> 
     <rollover_interval nil="true"/> 
     <destination> 
     <password>upass</password> 
     <username>uname</username> 
     <uri>destination_path</uri> 
     </destination> 
    </file_group_settings> 
    </input> 
</job> 

Vielen Dank

Antwort

1

Mit xmlstarlet:

xmlstarlet edit \ 
      --update "//job/input/file_input/uri" \ 
      --value 's3://my_source' \ 
      --update "//job/input/file_group_settings/destination/uri" \ 
      --value 's3://mydestination' file.xml 

Wenn Sie file.xml Inplace bearbeiten möchten, fügen Sie Option -L.


See: xmlstarlet edit --help

+0

ich einen Kommentar von tiefstem Herzen Sie links zu schätzen, es gelöscht wird, wie einige (nicht sicher, wie), ich entschuldige mich, wenn ich irgendein Gesetz gebrochen hier, wollte nicht, dass etwas spammen und nur hier lernen und helfen wollen. – RavinderSingh13

+0

Hallo cryus, Ich entschuldige mich, dass ich dir nicht früher zurückgeschrieben habe, ich habe vergessen zu fragen, eine neue Zeile einzufügen. https://stackoverflow.com/questions/46392564/xmlstarlet-append-and-insert-new-line-value – jojo

+1

@ RavinderSingh13: Danke. Ihr vorheriger Beitrag war etwas zu redselig. jojo: Das ist kein Problem. – Cyrus