有一组单独的目录中的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