xmlstarlet toolkit 腳本操作xml的好工具, 用法心得

在linux終端或者secureCRT ssh上去,或者是shell腳本可以直接調用xmlstarlet命令操作,解析xml很方便,由於是工作上用到的東東,查了相關的資料,也遇到過一些問題,所以在解決後記錄備忘,這裏只列出一些常用的命令和一些文檔裏沒有提到的命令,如需文檔,請參考:http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html

例子的測試xml文件都以test.xml爲準:

test.xml文件內容如下:

<root>

<aaa>he peng</aaa>

<bbb>zhang ling

</bbb>

<aaa>multiple</aaa>

</root>


1.下載

下載地址:http://xmlstar.sourceforge.net/

隨便下載一個版本,這個xmlstarlet是用c語言實現的,需要依賴libxml庫,所以,如果你的libxml版本太低了,那就下載一個版本低的xmlstar先練練手吧


2.安裝

解壓後

sudo ./configure

sudo ./make

sudo ./make install


3.操作方法之轉換結點

example 1:(注:有些系統安裝好xmlstarlet命令後使用的命令名可能叫xmlstarlet,而不是例子中的xml命令)

xml el test.xml

輸出:

root

root/aaa

root/bbb

root/aaa

(注:xml命令只是把處理結果輸出到控制檯,並不直接改變原來文件的任何地方)

example2:唯一結點(unique)

xml el -u test.xml

輸出:

root
root/aaa
root/bbb

4.操作方法之查詢結點值

語法:xml sel <global-options> {<template>} [ <xml-file> ... ]

example1:

xml sel -t -v /root/bbb test.xml #-t表示使用模板,-v就是模板參數,表示取路徑的值即value of

輸出:

zhang ling

(注:zhang ling後有一個空行,可見該語句是把<bbb>和</bbb>之間的值完整的輸出,
-v指定的結點路徑一定要以"/"開頭,不要然不同的機器可能執行不成功,之後的結點路徑都是這樣

example2:(輸出第二個aaa的值)

xml set -t -v /root/aaa[2] test.xml

輸出:

multiple

(注:如果有重複的相同結點,如果有屬性可以區分,可以指定屬性,如:/root/aaa[@name],表示/root/aaa結點,屬性爲name,當然例子沒有屬性,所以我們使用數字,使用數字的方法是同事無意中試出來的哦!文檔我找了很久都沒找到,這也因爲這個問題出現在工作中,所以研究了一陣)

5.操作方法之更新結點值

語法:xml ed <global-options> {<action>} [ <xml-file-or-uri> ... ]

example1:(更改指定結點的值)

xml ed -u /root/bbb -v 123 test.xml #-u 是update  -v 是value

輸出:

<?xml version="1.0"?>
<root>
  <aaa>he peng</aaa>
  <bbb>123</bbb>
  <aaa>multiple</aaa>
</root>
(注:不但更新了值,還格式化了輸出,還加了xml頭)

example2:(更新多結點的值)

xml ed -u /root/aaa -v 123 test.xml

輸出:

<?xml version="1.0"?>
<root>
  <aaa>123</aaa>
  <bbb>zhang ling
</bbb>
  <aaa>123</aaa>
</root>

這樣就把所有的/root/aaa改了

example3:(更新多結點的某一個的值)

xml ed -u /root/aaa[2] -v 123 test.xml

輸出:

<?xml version="1.0"?>
<root>
  <aaa>he peng</aaa>
  <bbb>zhang ling
</bbb>
  <aaa>123</aaa>
</root>

example4:(刪除多結點的某一個)

xml ed -d /root/aaa[2] test.xml # -d 是delete

輸出:

<?xml version="1.0"?>
<root>
  <aaa>he peng</aaa>
  <bbb>zhang ling
</bbb>
</root>

6.操作方法驗證有效性

xml val test.xml

輸出:

test.xml - valid

表明有效,是符合語法的xml形式

發佈了36 篇原創文章 · 獲贊 12 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章