精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在命令行中使用 XMLStarlet 來解析 XML

系統 Linux
我最喜歡的 XML 實用程序之一是 XMLStarlet,這是一個用于終端的 XML 工具包,借助這個 XML 工具包,你可以驗證、解析、編輯、格式化和轉換 XML 數據。XMLStarLet 是個相對較小的命令,但瀏覽 XML 卻充滿潛力,因此本文演示了如何使用它來查詢 XML 數據。

[[414019]]

借助終端上的 XML 工具包 XMLStarlet,你就是 XML 之星。

學習解析 XML 通常被認為是一件復雜的事情,但它不一定是這樣。XML 是高度嚴格結構化的,所以也是相對來說可預測的。也有許多其他工具可以幫助你使這項工作易于管理。

我最喜歡的 XML 實用程序之一是 XMLStarlet,這是一個用于終端的 XML 工具包,借助這個 XML 工具包,你可以驗證、解析、編輯、格式化和轉換 XML 數據。XMLStarLet 是個相對較小的命令,但瀏覽 XML 卻充滿潛力,因此本文演示了如何使用它來查詢 XML 數據。

安裝

XMLStarLet 默認安裝在 CentOS、Fedora,和許多其他現代 Linux 發行版上,所以你可以打開終端,輸入 xmlstarlet 來訪問它。如果 XMLStarLet 還沒有被安裝,你的操作系統則會為你安裝它。

或者,你可以用包管理器安裝 xmlstarlet

  1. $ sudo dnf install xmlstarlet

在 macOS 上,可以使用 MacPorts 或 Homebrew。在 Windows 上,可以使用 Chocolatey。

如果都失敗了,你可以從 Sourceforge 上的源代碼 手動安裝它。

用 XMLStarlet 解析 XML

有許多工具可以幫助解析和轉換 XML 數據,包括允許你 編寫自己的解析器 的軟件庫,和復雜的命令,如 fop 和 xsltproc。不過有時你不需要處理 XML 數據;你只需要一個方便的方法從 XML 數據中來提取、更新或驗證重要數據。對于隨手的 XML 交互,我使用 xmlstarlet,這是常見的處理 XML任務的一個典型的“瑞士軍刀”式應用。通過運行 --help 命令,你可以看到它提供哪些選項:

  1. $ xmlstarlet --help
  2. Usage: xmlstarlet [<options>] <command> [<cmd-options>]
  3. where <command> is one of:
  4. ed (or edit) - Edit/Update XML document(s)
  5. sel (or select) - Select data or query XML document(s) (XPATH, etc)
  6. tr (or transform) - Transform XML document(s) using XSLT
  7. val (or validate) - Validate XML document(s) (well-formed/DTD/XSD/RelaxNG)
  8. fo (or format) - Format XML document(s)
  9. el (or elements) - Display element structure of XML document
  10. c14n (or canonic) - XML canonicalization
  11. ls (or list) - List directory as XML
  12. [...]

你可以通過在這些子命令的末尾附加 -help 來獲得進一步的幫助:

  1. $ xmlstarlet sel --help
  2. -Q or --quiet - do not write anything to standard output.
  3. -C or --comp - display generated XSLT
  4. -R or --root - print root element &lt;xsl-select&gt;
  5. -T or --text - output is text (default is XML)
  6. -I or --indent - indent output
  7. [...]

用 sel 命令選擇數據

可以使用 xmlstarlet select(簡稱 sel)命令查看 XML 格式的數據。下面是一個簡單的 XML 文檔:

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <xml>
  3. <os>
  4. <linux>
  5. <distribution>
  6. <name>Fedora</name>
  7. <release>7</release>
  8. <codename>Moonshine</codename>
  9. <spins>
  10. <name>Live</name>
  11. <name>Fedora</name>
  12. <name>Everything</name>
  13. </spins>
  14. </distribution>
  15.  
  16. <distribution>
  17. <name>Fedora Core</name>
  18. <release>6</release>
  19. <codename>Zod</codename>
  20. <spins></spins>
  21. </distribution>
  22. </linux>
  23. </os>
  24. </xml>

在 XML 文件中查找數據時,你的第一個任務是關注要探索的節點。如果知道節點的路徑,請使用 -value of 選項指定完整路徑。你越早瀏覽 文檔對象模型(DOM)樹,就可以看到更多信息:

  1. $ xmlstarlet select --template \
  2. --value-of /xml/os/linux/distribution \
  3. --nl myfile.xml
  4. Fedora
  5. 7
  6. Moonshine
  7. Live
  8. Fedora
  9. Everything
  10. Fedora Core
  11. 6
  12. Zod

--nl 代表“新的一行”,它插入大量的空白,以確保在輸入結果后,終端在新的一行顯示。我已經刪除了樣本輸出中的一些多余空間。

通過進一步深入 DOM 樹來凝聚關注點:

  1. $ xmlstarlet select --template \
  2. --value-of /xml/os/linux/distribution/name \
  3. --nl myfile.xml
  4. Fedora
  5. Fedora Core

條件選擇

用于導航和解析 XML 的最強大工具之一被稱為 XPath。它規范了 XML 搜索中使用的語法,并從 XML 庫調用函數。XMLStarlet 能夠解析 XPath 表達式,因此可以使用 XPath 函數來有條件的進行選擇。XPath 具有豐富的函數,由 W3C 提供了詳細文檔,但我覺得 Mozilla 的 XPath 文檔 更簡潔。

可以使用方括號作為測試函數,將元素的內容與某個值進行比較。下面是對 <name> 元素的值的測試,它僅返回與特定匹配相關聯的版本號。

想象一下,示例 XML 文件包含以 1 開頭的所有 Fedora 版本。要查看與舊名稱 “Fedora Core” 關聯的所有版本號(該項目從版本 7 開始刪除了名稱中的 “Core”),請執行以下操作:

  1. $ xmlstarlet sel --template \
  2. --value-of '/xml/os/linux/distribution[name = "Fedora Core"]/release' \
  3. --nl myfile.xml
  4. 6
  5. 5
  6. 4
  7. 3
  8. 2
  9. 1

通過將路徑的 --value-of 更改為 /xml/os/linux/distribution[name=“Fedora Core”]/codename,你便可以查看這些版本的所有代號。

匹配路徑和獲取目標值

將 XML 標記視為節點的一個好處是,一旦找到節點,就可以將其視為當前的數據的“目錄”。它不是一個真正的目錄,至少不是文件系統意義上的目錄,但它是一個可以查詢的數據集合。為了幫助你將目標和“里面”的數據分開,XMLStarlet 把你試圖用 --match 選項匹配的內容和用 --value-of 選項匹配的數據值進行了區分。

假設你知道 <spin> 節點包含幾個元素。這就是你的目標節點。一旦到了這里,就可以使用 --value-of 指定想要哪個元素的值。要查看所有元素,可以使用點(.)來代表當前位置:

  1. $ xmlstarlet sel --template \
  2. --match '/xml/os/linux/distribution/spin' \
  3. --value-of '.' --nl myfile.xml \
  4. Live
  5. Fedora
  6. Everything

與瀏覽 DOM 一樣,可以使用 XPath 表達式來限制返回數據的范圍。在本例中,我使用 last() 函數來檢索 spin 節點中的最后一個元素:

  1. $ xmlstarlet select --template \
  2. --match '/xml/os/linux/distribution/spin' \
  3. --value-of '*[last()]' --nl myfile.xml
  4. Everything

在本例中,我使用 position() 函數選擇 spin 節點中的特定元素:

  1. $ xmlstarlet select --template \
  2. --match '/xml/os/linux/distribution/spin' \
  3. --value-of '*[position() = 2]' --nl myfile.xml
  4. Fedora

--match 和 --value 選項可以重疊,因此如何將它們一起使用取決于你自己。對于示例 XML,這兩個表達式執行的是相同的操作:

  1. $ xmlstarlet select --template \
  2. --match '/xml/os/linux/distribution/spin' \
  3. --value-of '.' \
  4. --nl myfile.xml
  5. Live
  6. Fedora
  7. Everything
  8.  
  9. $ xmlstarlet select --template \
  10. --match '/xml/os/linux/distribution' \
  11. --value-of 'spin' \
  12. --nl myfile.xml
  13. Live
  14. Fedora
  15. Everything

熟悉 XML

XML 有時看起來過于冗長和笨拙,但為與之交互和構建的工具卻總是讓我吃驚。如果你想要好好使用 XML,那么 XMLStarlet 可能是一個很好的切入點。下次要打開 XML 文件查看其結構化數據時,請嘗試使用 XMLStarlet,看看是否可以查詢這些數據。當你對 XML 越熟悉時,它就越能作為一種健壯靈活的數據格式而為你服務。 

 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-11-15 14:30:49

Pythonargparse編程語言

2020-09-11 07:50:37

nmcli命令行網絡連接

2023-03-02 19:36:34

C語言

2018-11-05 13:50:44

Linux命令tcpdump

2022-10-18 10:00:09

Linuxtcpdump命令

2018-10-22 10:00:05

Linux命令ls

2020-08-21 07:35:12

Linux命令行計算器

2010-06-01 19:24:40

SVN命令行

2009-07-20 09:55:30

華為命令行解析華為認證

2010-08-20 10:05:23

用戶命令

2010-07-15 10:47:22

Perl命令行

2023-01-12 09:30:31

Linux命令行xml

2009-07-15 17:10:26

Jython解析命令行

2021-07-29 09:07:44

React視圖庫Web 開發

2019-05-21 10:38:17

Linux命令行

2022-02-14 08:21:48

Linux元字符

2010-01-27 14:01:19

Android命令行啟

2010-07-15 11:08:23

Perl命令行

2023-03-08 15:38:56

Linux命令dict

2017-12-05 09:51:13

LinuxTranslate S命令行翻譯器
點贊
收藏

51CTO技術棧公眾號

婷婷亚洲婷婷综合色香五月| 精品少妇一区二区30p| 欧美日韩中文在线视频| 欧美色综合一区二区三区| 模特精品在线| 神马久久桃色视频| 成人啪啪18免费游戏链接| 成人影院网站| 亚洲日穴在线视频| 国产一区二区三区免费不卡| 久久精品五月天| 欧美成人日本| 亚洲免费av片| a级大片免费看| 奇米777日韩| 一区二区三区视频在线观看| 欧美亚洲免费高清在线观看| 国产精品久久婷婷| 香蕉av777xxx色综合一区| 在线观看日韩av| 又黄又色的网站| 久久91视频| 99视频在线精品国自产拍免费观看| 亚洲嫩模很污视频| 一级全黄裸体片| 激情久久99| 精品美女久久久久久免费| 一区二区在线不卡| 高清在线观看av| 99re热视频这里只精品| 国产日韩精品在线| 波多野结衣一区二区三区在线 | 神马影院午夜我不卡| www夜片内射视频日韩精品成人| 日韩电影在线观看电影| 国产+人+亚洲| 欧美成人精品一区二区免费看片 | 成人sese在线| 91理论片午午论夜理片久久| 亚洲色成人www永久网站| 亚洲精品日本| 久久99精品久久久久久青青91| 日韩福利在线视频| 国产影视一区| 亚洲男人天堂视频| av无码av天天av天天爽| 成人免费在线电影网| 日韩一本二本av| 超碰成人在线播放| 亚洲欧美专区| 国产精品三级在线观看| 久久av一区二区| 少妇高潮久久久| 成人免费三级在线| 99在线影院| 精品国产av鲁一鲁一区 | 91网站免费看| 国产尤物视频在线观看| 激情综合色丁香一区二区| 国产中文字幕亚洲| 亚洲中文字幕在线观看| 极品少妇xxxx偷拍精品少妇| 成人久久一区二区| 精品人妻无码一区二区色欲产成人| 韩国精品一区二区| 91观看网站| 亚洲av无码国产精品永久一区| 国产精品一区二区果冻传媒| 91成人免费观看| 少妇喷水在线观看| 久久综合狠狠综合| 三级三级久久三级久久18| 成人在线免费公开观看视频| 国产精品区一区二区三| 中文字幕欧美人与畜| 国产在线激情| 亚洲一区二区三区精品在线| 麻豆tv在线播放| av日韩电影| 欧美体内she精视频| 午夜国产福利在线观看| 亚洲精品不卡在线观看| 日韩成人av网| 妖精视频在线观看免费| 午夜久久久久| 欧美一区视频在线| 中文字幕人妻色偷偷久久| 国产乱子伦视频一区二区三区| 成人av片网址| 欧美午夜黄色| 亚洲日本电影在线| 91视频 -- 69xx| 日本国产一区| 亚洲国产毛片完整版| 国产精品久久久久久久av| 我不卡神马影院| 91精品国产91久久久久久吃药| 无码人妻精品一区二| 韩国欧美国产1区| 蜜桃日韩视频| 手机在线免费看av| 在线观看三级视频欧美| 精品国产免费久久久久久婷婷| 视频一区中文| 久久久欧美一区二区| 中文字幕a级片| 99久久国产综合精品女不卡| 亚洲精品国产精品久久| 51av在线| 91精品国产91热久久久做人人| 亚洲av无码一区二区二三区| 婷婷中文字幕一区| 国产福利精品在线| 蜜桃久久一区二区三区| 国产精品护士白丝一区av| 黄页网站在线观看视频| 91成人福利社区| 亚洲欧美日韩天堂一区二区| 久久国产在线观看| 久久99精品久久久久久动态图 | 国产精品久久久久久亚洲影视| 后进极品白嫩翘臀在线视频| 国产精品久久影院| 久久久久久久久久久久久国产精品| 日韩不卡在线视频| 精品国偷自产在线| 自拍偷拍第八页| xfplay精品久久| 免费不卡av在线| 51精品国产| 欧美成人全部免费| 91丨九色丨丰满| 国产欧美日韩在线视频| 国产亚洲成av人在线观看导航 | 同产精品九九九| 日韩av影视大全| 久久要要av| 国产精品日韩欧美综合| 国产系列在线观看| 欧美性xxxxhd| 中文字幕在线播放视频| 很黄很黄激情成人| 超碰在线97av| 国产一二三区在线观看| 欧美精品精品一区| 亚洲精品国产精品乱码在线观看| 日韩精品一二区| 欧洲av一区| 亚洲天堂一区二区| 亚洲色图18p| av毛片在线免费观看| 久久九九国产精品| 久久久国产欧美| 精品免费av| 国产免费一区二区三区在线观看| 超碰国产在线| 欧美日本在线视频| 99热在线观看精品| 国产精品99久久久久久久vr| 青少年xxxxx性开放hg| 亚洲免费资源| 久久久久久91| 婷婷在线免费观看| 五月天丁香久久| 人人妻人人澡人人爽人人精品| 亚洲欧美成人| 亚洲精品欧美精品| 99精品美女视频在线观看热舞| 久久精品一本久久99精品| 精品人妻aV中文字幕乱码色欲| 一区二区激情视频| 亚洲av成人无码一二三在线观看| 久久一区二区三区超碰国产精品| 日韩国产在线一区| 一区二区三区日本视频| 欧美放荡办公室videos4k| 囯产精品一品二区三区| 欧美性极品xxxx做受| 女女互磨互喷水高潮les呻吟 | 午夜精品久久久久久久久| 一女三黑人理论片在线| 日韩福利电影在线观看| 四虎影院一区二区| 成人春色在线观看免费网站| 热久久这里只有| 免费a级在线播放| 亚洲白拍色综合图区| 日本视频免费观看| 亚洲男人的天堂在线aⅴ视频| 男人的天堂影院| 免费在线视频一区| 91免费国产精品| 免费看成人哺乳视频网站| 成人久久18免费网站图片| 9999在线视频| www.99久久热国产日韩欧美.com| 国精品人妻无码一区二区三区喝尿| 色香蕉久久蜜桃| 亚洲国产精品免费在线观看| 久久香蕉国产线看观看99| 免费在线观看污网站| 制服诱惑一区二区| 国产高清免费在线| 免费观看不卡av| 96久久精品| 99re久久| 青青久久av北条麻妃海外网| a级影片在线观看| 一区二区日韩精品| 无码精品人妻一区二区| 337p亚洲精品色噜噜| 久久久黄色大片| 亚洲午夜在线视频| 老熟妇高潮一区二区三区| 久久久亚洲精品一区二区三区| 麻豆传媒在线看| 蜜臀va亚洲va欧美va天堂 | 爱搞国产精品| 欧美xxxx18国产| 91短视频版在线观看www免费| 亚洲精品av在线播放| 国产精品视频一二区| 91精品办公室少妇高潮对白| 四虎永久在线精品| 亚洲欧美成人一区二区三区| 99久久99久久精品免费看小说.| 26uuu亚洲| xfplay5566色资源网站| 国产美女精品在线| gai在线观看免费高清| 日本v片在线高清不卡在线观看| 少妇高潮喷水在线观看| 欧美日韩一卡| 国产精品自拍合集| 亚洲高清影视| www.午夜色| 999久久久91| 亚洲综合五月天| 日韩一区二区在线| 先锋影音亚洲资源| 一本色道久久综合亚洲精品酒店| 国产一区二区三区免费不卡| 国产精品极品国产中出| 国产精品国产精品国产专区蜜臀ah | 亚洲激情自拍偷拍| 日本黄色小说视频| 亚洲美女屁股眼交3| 男人av资源站| 最新国产成人在线观看| 肉色超薄丝袜脚交69xx图片| 国产精品理论片在线观看| 成人欧美一区二区三区黑人一 | 成人晚上爱看视频| 黄色国产在线视频| 99久久精品国产网站| 中文字幕一区二区久久人妻网站 | 亚洲精品久久久久久国| 最新高清无码专区| 久久精品www人人爽人人| 一区二区三区四区在线| 日本特黄一级片| 色网综合在线观看| 一级aaaa毛片| 日韩片之四级片| 人妻偷人精品一区二区三区| 日韩hd视频在线观看| 美国成人毛片| 最新亚洲国产精品| 午夜成年人在线免费视频| 欧美成人午夜剧场免费观看| brazzers在线观看| 精品一区二区精品| 2021国产视频| 亚洲精一区二区三区| 日本成人在线免费视频| 久久精品国产999大香线蕉| 精品国产鲁一鲁一区二区三区| 国产高清精品久久久久| 国产一级伦理片| 国产欧美日韩综合精品一区二区| 日本一级片免费| 香蕉成人啪国产精品视频综合网| 性无码专区无码| 欧美日本韩国一区| 欧美一级淫片免费视频魅影视频| 亚洲欧美日韩综合| 国产盗摄在线观看| 欧美亚洲视频在线看网址| 亚洲国产伊人| 九九九九精品| 久久视频精品| 欧美爱爱视频免费看| 久久黄色级2电影| 亚洲激情 欧美| 中文字幕一区二区日韩精品绯色| 国产精品suv一区二区69| 欧美亚洲尤物久久| 亚洲精品成av人片天堂无码| 亚洲毛片一区二区| 永久免费网站在线| 国产精品久久一区主播| 成人在线视频你懂的| 亚洲一区三区视频在线观看| 亚洲国产午夜| 亚洲高清视频免费| 国产丝袜美腿一区二区三区| 久久久久久久久97| 欧美日韩五月天| 日韩在线视频观看免费| 久久精品亚洲热| 国产极品嫩模在线观看91精品| 精品国产乱码久久久久久蜜柚| 91精品秘密在线观看| 日韩欧美黄色大片| av高清久久久| 精品爆乳一区二区三区无码av| 欧美三级视频在线| 欧美成熟毛茸茸| 97久久久久久| 1204国产成人精品视频| 日本不卡一区二区三区四区| 日本va欧美va瓶| 久久精品国产亚洲av久| 亚洲mv在线观看| 性网爆门事件集合av| 久久亚洲精品中文字幕冲田杏梨| 日本另类视频| 欧美三级网色| 久久婷婷av| 老牛影视av老牛影视av| 午夜精品视频一区| 亚洲奶汁xxxx哺乳期| 欧美成人性色生活仑片| 精品久久久无码中文字幕| 国产一区二区三区国产| 亚洲男女在线观看| 亚洲国产日韩av| 亚洲第一色视频| 欧美高清无遮挡| 一区中文字幕电影| 日韩在线视频在线| 国产激情一区二区三区| 国产午夜精品理论片| 666欧美在线视频| 黄色成年人视频在线观看| 成人午夜激情网| 在线中文字幕亚洲| 手机看片国产精品| 一区二区三区精品| www.国产三级| 国内自拍欧美激情| 久久精品福利| 精品中文字幕av| 久久免费看少妇高潮| 久久精品视频5| 国产一区二区三区18| 日韩不卡视频在线观看| 亚洲视频在线二区| 九九热在线视频观看这里只有精品| 网站永久看片免费| 欧美精品第1页| 91三级在线| 国产精品一区二区免费看| 在线视频亚洲| 东方伊人免费在线观看| 在线播放视频一区| 欧美hdxxx| 久久久福利视频| 日韩1区2区3区| 国产精品视频一区二区三| 精品国产乱码久久久久久老虎 | 在线日本欧美| 少妇特黄a一区二区三区| 久久99精品久久久久久| 欧美国产精品一二三| 日韩精品免费综合视频在线播放| 欧美精品高清| 韩国黄色一级大片| 成人av网站在线观看免费| 国产成人无码av| 精品国内自产拍在线观看| 97品白浆高清久久久久久| 久久国产亚洲精品无码| 国产精品网站导航| 成人av免费播放| 4p变态网欧美系列| 999精品一区| 51调教丨国产调教视频| 欧美日韩成人激情| 国产高清中文字幕在线| 亚洲国产精品一区二区第一页| 国产成人午夜高潮毛片| 6080午夜伦理| 欧美国产高跟鞋裸体秀xxxhd| 日韩高清电影免费| 欧美一级特黄aaa| 欧美性猛交xxxx乱大交3| 国内外激情在线| 欧美性bbwbbwbbwhd| 粉嫩av一区二区三区粉嫩|