[英]Shell script, parse XML snippet
在shell腳本(Linux,bash,#!/ bin / sh)中,我有一個包含XML數據的變量,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<interface>
<objects retrieved="0" total="0"/>
</interface>
獲取此數據時已經完成了一些錯誤處理,請關注實際問題。 問題是:簡單/有效地讀取“對象”元素的屬性數據(命名為“已檢索”)。 它可以是0或1.(沒有別的)。 我想我有兩個選擇:正則表達式和一些外部程序的XML解析。 但我應該選擇哪一個? 提前致謝。
您可以使用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
兩者都是不錯的選擇,如果你想嚴格選擇你的腳本應該獨立於外部程序,我認為使用正則表達式會更好。 使用正則表達式可以使程序功能比使用外部程序更快。
但是使用正則表達式並不總是一個可行的選擇,特別是當你的時間較少時,你正在制作的正則表達式很復雜。 外部程序只是一個選項。 如果您計划將此腳本移動到另一台計算機,則此外部程序可能會導致依賴性或開銷。
我會建議正則表達式。 這些可能對你有幫助。 看一看。
這在內容中有一些想法。
http://silveiraneto.net/2010/05/13/substitution-on-a-xml-file-shell-script-snippet/
這是一個將XML名稱 - 值對和屬性轉換為bash變量的函數。
http://www.humbug.in/2010/parse-simple-xml-files-using-bash-extract-name-value-pairs-and-attributes/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.