我需要通過 bash 腳本以自動方式更新 xml 中的特定值。我的 xml 檔案有很多類似的行,例如:
<xml>
<main>
<buildElement name="test_one" version="" path="" />
<buildElement name="test_two" version="" path="" />
</main>
</xml>
我需要找到元素名稱“test_one”并編輯版本。我正在嘗試這個,但這無濟于事:
預期輸出:
<xml>
<main>
<buildElement name="test_one" version="some_value" path="" />
<buildElement name="test_two" version="" path="" />
</main>
</xml>
我正在嘗試通過 xmlstarlet 和 sed 來獲取它,但無法正常作業:
xmlstarlet edit --update '//xml/main/buildElement/name="test_one"/version' --value 'some_value' myXML.xml
uj5u.com熱心網友回復:
您的 xpath 語法不正確。您需要使用@來參考屬性,而要搜索特定元素則需要過濾運算式。你要:
xmlstarlet edit --update \
'//xml/main/buildElement[@name="test_one"]/@version' \
-v some_value myXML.xml
這將輸出:
<?xml version="1.0"?>
<xml>
<main>
<buildElement name="test_one" version="some_value" path=""/>
<buildElement name="test_two" version="" path=""/>
</main>
</xml>
uj5u.com熱心網友回復:
'//xml/main/buildElement/name="test_one"/version'
你要
'//xml/main/buildElement[@name="test_one"]/@version'
(基本上,您似乎在猜測,這不會讓您對 XPath 走得太遠。做一些閱讀。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447362.html
