簡體   English   中英

Shell腳本,解析XML片段

[英]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

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

但是使用正則表達式並不總是一個可行的選擇,特別是當你的時間較少時,你正在制作的正則表達式很復雜。 外部程序只是一個選項。 如果您計划將此腳本移動到另一台計算機,則此外部程序可能會導致依賴性或開銷。

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

如何使用shellscript解析XML?

  • 這真的很有幫助

這在內容中有一些想法。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM