有一組單獨的目錄中的XML文檔的,這樣每個文檔:xmlstarlet刪除多個文檔的父元素遞歸
<xmldoc>
<data>data text</data>
<parent>
<descendent1>
<descendent2>motorcyclebaby.com?query</descendent2>
</descendent1>
</parent>
</xmldoc>
我想刪除包含「摩托車」的descendent2在所有的父元素文件。到目前爲止,我有這個,它適用於單個文檔:
xmlstarlet ed -d "//parent[descendent1/descendent2[contains(text(),'motorcycle')]]" xmldoc.xml
我已經試過這與find遞歸刪除父元素:
find . -name 'xmldoc.xml' -print0 | xmlstarlet ed -d "//parent[descendent1/descendent2[contains(text(),'motorcycle')]]" xmldoc.xml
,但得到「無法加載外部實體「xmldoc.xml」」
也試過:
find . -name "xmldoc.xml" -exec xmlstarlet ed -d "//parent[descendent1/descendent2[contains(text(),'motorcycle')]]" xmldoc.xml {} +
在單個文檔中工作的行可能無法工作。必須添加--inplace:xmlstarlet ed --inplace -d「// parent [descendent1/descendent2 [contains(text(),'motorcycle')]]」xmldoc.xml – motorbaby