如何过滤掉某些类型的不具有神奇值属性的元素并保留文档的其余部分?所有这一切都使用xmlstarlet
?
到目前为止我所要做的是:
cat << EOF > database.xml
<?xml version="1.0"?>
<database>
<some name="A" />
<some name="B" />
<some name="C" />
<text>this is some text to be applied...</text>
<project>
<test deeper="structure"/>
</project>
</database>
EOF
and
xmlstarlet sel -t -m "*" -c "*[not(self::some[@name != 'A'])]" database.xml
yields
<some name="A"/><text>this is some text to be applied...</text><project>
<test deeper="structure"/>
</project>
但这隐藏了我的珍贵<database>
tag
。除了缩进,这不是问题......并且在以下情况下不起作用<some>
不是以下的直系后代<database>
, 的孩子<project>
例如。
我想要得到的是数据库原样,但是所有<some>
已删除except那个叫A
:
<database>
<some name="A" />
<text>this is some text to be applied...</text>
<project>
<test deeper="structure"/>
</project>
</database>
问候
不幸的是,xmlstarlet 的sel
不支持apply-templates
,但您可以使用ed
为此命令:
xmlstarlet ed -d '/database//some[@name != "A"]' input.xml
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)