亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
Using xmlstarlet (Recommended)
Using xmllint with XPath
首頁 后端開發(fā) XML/RSS教程 如何在 bash 腳本中循環(huán)遍歷 XML 文件?

如何在 bash 腳本中循環(huán)遍歷 XML 文件?

Oct 14, 2025 am 12:30 AM

使用xmlstarlet或xmllint可安全遍歷XML文件,避免用grep、sed等文本工具。1. 安裝xmlstarlet后,用xmlstarlet sel -t -m "http://item" -v "name" -o ": " -v "price" -n data.xml輸出每項名稱與價格。2. 可結合while循環(huán)處理分隔數據:xmlstarlet sel -t -m "http://item" -v "concat(name,'|',price)" -n data.xml | while IFS='|' read -r name price; do echo "Item: $name, Price: $price"; done。3. 用xmllint需先獲取節(jié)點數count=$(xmllint --xpath "count(//item)" data.xml),再通過索引循環(huán)調用--xpath "http://item[$i]/name/text()"提取各值。推薦優(yōu)先使用xmlstarlet實現簡潔高效解析。

How do I loop through an XML file in bash script?

To loop through an XML file in a bash script, you should avoid parsing XML with basic text tools like grep, sed, or awk because they can't reliably handle nested structures or attributes. Instead, use proper XML parsing tools such as xmllint (from libxml2) or xmlstarlet. Here's how to do it effectively.

xmlstarlet is a command-line tool specifically designed for querying and manipulating XML files.

Install xmlstarlet:
On Debian/Ubuntu: sudo apt install xmlstarlet
On CentOS/RHEL: sudo yum install xmlstarlet or dnf install xmlstarlet

Example XML file (data.xml):

<items>
  <item id="1">
    <name>Apple</name>
    <price>1.20</price>
  </item>
  <item id="2">
    <name>Banana</name>
    <price>0.80</price>
  </item>
</items>

Loop through each item using xmlstarlet:

xmlstarlet sel -t -m "//item" \
  -v "name" -o ": " \
  -v "price" -n data.xml

This outputs:

Apple: 1.20
Banana: 0.80

You can also capture values in a while loop:

xmlstarlet sel -t -m "//item" \
  -v "concat(name, '|', price)" -n data.xml | \
while IFS='|' read -r name price; do
  echo "Item: $name, Price: $price"
done

Using xmllint with XPath

xmllint can evaluate XPath expressions but doesn’t support looping directly. You need to extract node counts first and iterate manually.

Get the number of items:

count=$(xmllint --xpath "count(//item)" data.xml)

Loop by index:

for ((i=1; i

<font color="#FF0000">Note: This method is slower and less elegant than xmlstarlet, especially for large files.</font>

<h3>Handling Namespaces</h3>
<font color="#000000">If your XML uses namespaces, you must declare them.</font>

<p>For example, with a namespace:</p>
<pre class="brush:php;toolbar:false">
<root xmlns:ns="http://example.com/ns">
  <item><name>Widget</name></item>
</root>

In xmlstarlet:

xmlstarlet sel -N ns="http://example.com/ns" -t \
  -m "//ns:item" -v "ns:name" -n data.xml

Basically, use xmlstarlet for clean, reliable XML processing in bash. It handles structure, attributes, and namespaces correctly—something raw string parsing can't do safely.

以上是如何在 bash 腳本中循環(huán)遍歷 XML 文件?的詳細內容。更多信息請關注PHP中文網其他相關文章!

本站聲明
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現有涉嫌抄襲侵權的內容,請聯系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驅動投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

了解maven中的pom.xml文件 了解maven中的pom.xml文件 Sep 21, 2025 am 06:00 AM

pom.xml是Maven項目的核心配置文件,它定義了項目的構建方式、依賴關系及打包部署行為。1.項目坐標(groupId、artifactId、version)唯一標識項目;2.dependencies聲明項目依賴,Maven自動下載;3.properties定義可復用變量;4.build配置編譯插件和源碼目錄;5.parentPOM實現配置繼承;6.dependencyManagement統一管理依賴版本。Maven通過解析pom.xml執(zhí)行構建生命周期,合理使用BOM和依賴管理可提升項目穩(wěn)

用node.js構建簡單的RSS饋送聚合器 用node.js構建簡單的RSS饋送聚合器 Sep 20, 2025 am 05:47 AM

要構建一個RSS聚合器,需使用Node.js結合axios和rss-parser包來抓取并解析多個RSS源,首先初始化項目并安裝依賴,然后在aggregator.js中定義包含HackerNews、TechCrunch等源的URL列表,通過Promise.all并發(fā)獲取并處理各源數據,提取標題、鏈接、發(fā)布時間和來源,合并后按時間倒序排列,接著可通過控制臺輸出或用Express創(chuàng)建服務器將結果以JSON格式返回,最后可添加緩存機制避免頻繁請求,提升性能,從而實現一個高效、可擴展的RSS聚合系統。

XSLT 3.0的XML轉換:什么新功能? XSLT 3.0的XML轉換:什么新功能? Sep 19, 2025 am 02:40 AM

XSLT3.0introducesmajoradvancementsthatmodernizeXMLandJSONprocessingthroughsevenkeyfeatures:1.Streamingwithxsl:modestreamable="yes"enableslow-memory,forward-onlyprocessingoflargeXMLfileslikelogsorfinancialdata;2.Packagesviaxsl:packagesupport

如何有效地流和解析千兆字節(jié)的XML文件 如何有效地流和解析千兆字節(jié)的XML文件 Sep 18, 2025 am 04:01 AM

要高效解析GB級XML文件,必須使用流式解析避免內存溢出,1.使用流式解析器如Python的xml.etree.iterparse或lxml,逐事件處理并及時調用elem.clear()釋放內存;2.僅處理目標標簽元素,通過標簽名或命名空間過濾無關數據,減少處理量;3.支持從磁盤或網絡流式讀取,結合requests和BytesIO或直接使用lxml迭代文件對象實現邊下載邊解析;4.優(yōu)化性能,清除父節(jié)點引用、避免存儲已處理元素、僅提取必要字段,并可結合生成器或異步處理提升效率;5.超大文件可考慮預

如何刮擦網站數據并從中創(chuàng)建RSS feed 如何刮擦網站數據并從中創(chuàng)建RSS feed Sep 19, 2025 am 02:16 AM

Checklegalconsiderationsbyreviewingrobots.txtandTermsofService,avoidserveroverload,andusedataresponsibly.2.UsetoolslikePython’srequests,BeautifulSoup,andfeedgentofetch,parse,andgenerateRSSfeeds.3.ScrapearticledatabyidentifyingHTMLelementswithDevTools

在React應用程序中食用和顯示RSS feed 在React應用程序中食用和顯示RSS feed Sep 23, 2025 am 04:08 AM

要將RSSfeed添加到React應用中,需通過服務器端代理解決CORS限制并解析XML數據,具體步驟如下:1.使用CORS代理(開發(fā)階段)或創(chuàng)建服務器函數(生產環(huán)境)獲取RSSfeed;2.利用DOMParser將XML轉換為JavaScript對象;3.在React組件中請求該接口,獲取解析后的JSON數據;4.渲染數據顯示標題、鏈接、日期和描述,并對HTML內容進行安全處理;5.建議添加加載狀態(tài)、錯誤處理、條目限制和服務器端緩存以優(yōu)化體驗。最終實現無需第三方API即可集成外部內容。

為什么以及何時使用XML名稱空間 為什么以及何時使用XML名稱空間 Sep 23, 2025 am 03:34 AM

XMLnamespacesareusedtopreventnamecollisionswhencombiningdifferentXMLvocabulariesinasingledocument.1)TheyavoidnameconflictsbyuniquelyidentifyingelementswiththesamelocalnamebutdifferentcontextsusingdistinctnamespaceURIs,asseenwithbook:titleandemp:title

DTD在XML文檔驗證中的作用 DTD在XML文檔驗證中的作用 Sep 24, 2025 am 03:41 AM

dtdplaysafoundationalRoleinxmldocumentValidationByDefiningAladaledements,屬性和DOCUMENTUMSTURE.1)itspecifies WhichElementsCanappear,Hishierarchical -Nesting,contentTypes,contentTypes,attributes,attributes,ant ant ant ant anddefaultValues.2)

See all articles