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形式
相關文章
- bat指令碼的基本操作BAT指令碼
- docker容器操作指令碼Docker指令碼
- Percona-Toolkit 之 pt-kill 用法
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼
- Windows bat指令碼之for迴圈用法WindowsBAT指令碼
- 理解 shell 指令碼中的常見用法: 2>&1指令碼
- xml操作的幾種方法XML
- Shell 中 $ 關於指令碼引數的幾種用法指令碼
- 寫好shell指令碼的8個建議指令碼
- [轉]寫好shell指令碼的13個技巧指令碼
- shell中set指令的用法
- weblogic指令碼工具WLST(1)Web指令碼
- FastScripts for Mac(指令碼呼叫工具)ASTMac指令碼
- ExcelWeb指令碼助手,自定義指令碼,批量操作Excel與網頁ExcelWeb指令碼網頁
- 【心得】Ctrl+Z、 、 、eof的區別和用法
- Bash 指令碼程式設計的一些高階用法指令碼程式設計
- 2020-12-31 Linux Shell指令碼if else 與或的用法Linux指令碼
- weex-toolkit工具的相關命令介紹
- python指令碼簡化jar操作命令Python指令碼JAR
- shell指令碼文字處理工具指令碼
- 使用percona-toolkit操作MySQL的實用命令小結MySql
- C# 操作xml(轉)C#XML
- PHP操作xml詳解PHPXML
- System Toolkit Mac系統維護工具Mac
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列
- percona-toolkit工具包的安裝和使用
- Hive的基本操作用法Hive
- shell指令碼字串和陣列的使用操作方法指令碼字串陣列
- 指令碼觸發工具——EventScripts Mac版指令碼Mac
- 主題 2 Shell工具和指令碼指令碼
- 指令碼快速啟動工具:FastScripts for mac指令碼ASTMac
- DSC:數倉SQL指令碼遷移的神奇工具SQL指令碼
- PHP透過DOM操作XMLPHPXML
- System Toolkit Mac(Mac系統維護工具)Mac
- System Toolkit for Mac(Mac系統維護工具)Mac
- Spring中基於XML方式的AOP操作SpringXML
- Linux相關的操作指令Linux
- 一個好程式碼的工具:Video Studio AIIDEAI
- Sass @at-root 指令用法示例