2012-04-13 111 views
0

在shell腳本(Linux,慶典,#/ bin/sh的!)我有一個包含這樣的XML數據的變量:讓當shell腳本,解析XML片斷

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

一些錯誤處理已經完成這個數據,所以請關注實際問題。 問題是:讀取「對象」元素屬性數據(名爲「檢索」)的簡單/有效的方式。它可以是0或1(而不是別的)。 我想我有兩個選擇:正則表達式和一些外部程序的XML解析。但我應該選擇哪一個? 在此先感謝。

+1

http://stackoverflow.com/questions/335250/parsing-xml-with-regex-in-java的 – gyorgyabraham 2012-04-13 09:33:42

+0

可能重複[如何猛砸解析XML?(HTTP://計算器.com/questions/893585/how-to-parse-xml-in-bash) – bitmask 2012-04-13 09:47:18

回答

1

您可以使用xmlstarlet得到ATTR:

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

或者

$ 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

謝謝,效果很好! – gyorgyabraham 2012-04-13 09:56:45

1

兩者都是不錯的選擇,如果你想要嚴格的選擇,你的腳本應該是獨立的外部程序,我認爲使用正則表達式更好。使用正則表達式可能會使程序的功能比使用外部程序更快。

但是,使用正則表達式並不總是一個可行的選擇,尤其是當你有更少的時間,並且正在製作的正則表達式是複雜的。只有外部程序是一個選項。如果您打算將此腳本移到另一臺計算機上,則此外部程序可能會導致依賴性或開銷。

我會建議正則表達式。 這些可能會對您有所幫助。看一看。

How to parse XML using shellscript?

  • 這是真的很有幫助

而這必須在內容有所瞭解。

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