2012-04-13 12 views
0

In einem Shell-Skript (Linux, bash, #/bin/sh!) Ich habe eine Variable XML-Daten wie folgt enthält:Shell-Skript, analysieren XML-Schnipsel

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<interface> 
    <objects retrieved="0" total="0"/> 
</interface> 

Einige Fehlerbehandlung ist bereits getan, wenn immer diese Daten, so konzentrieren Sie sich bitte auf die eigentliche Frage. Und die Frage ist: einfache/effektive Art, die Attributdaten des "objects" -Elements zu lesen ("request" genannt). Es kann 0 oder 1 sein (und nichts anderes). Ich denke, ich habe zwei Optionen: reguläre Ausdrücke und XML-Parsing mit einem externen Programm. Aber welches sollte ich wählen? Vielen Dank im Voraus.

+1

http://stackoverflow.com/questions/335250/parsing-xml-with-regex-in-java – gyorgyabraham

+0

möglich Duplikat von [Wie XML in Bash analysieren?] (Http: // Stackoverflow .com/fragen/893585/how-to-parse-xml-in-bash) – bitmask

Antwort

1

können Sie xmlstarlet verwenden, um die attr zu erhalten:

$ xmlstarlet sel -t -m //objects -v @retrieved input.xml 
0 

Oder

$ xmlstarlet sel -t -m //objects/@retrieved -v . input.xml 

-m or --match <xpath>  - match XPATH expression 
-v or --value-of <xpath> - print value of XPATH expression 
+0

Danke, funktioniert sehr gut! – gyorgyabraham

1

Beide sind eine gute Wahl, wenn Sie strenge Auswahl möchten, dass Ihr Skript sollte unabhängig sein von externen Programmen halte ich die Verwendung von regulären Ausdrücken für besser. Wenn Sie regulären Ausdruck verwenden, kann das Programm schneller arbeiten als mit einem externen Programm.

Aber die Verwendung von regulärem Ausdruck ist nicht immer eine praktikable Option, besonders wenn Sie weniger Zeit haben und der reguläre Ausdruck komplex ist. Externes Programm ist dann nur eine Option. Wenn Sie dieses Skript auf einen anderen Computer verschieben möchten, kann dieses externe Programm Abhängigkeiten oder einen Overhead verursachen.

Ich werde Reguläre Ausdrücke vorschlagen. Diese können Ihnen helfen. Schau mal.

How to parse XML using shellscript?

  • Das ist sehr hilfreich

Und diese eine Vorstellung im Inhalt haben.

http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/