gpt4 book ai didi

xmlstarlet:过滤掉具有属性的元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:24 27 4
gpt4 key购买 nike

如何过滤掉某些类型的元素,这些元素不具有具有魔法值的属性并保留文档的其余部分?所有这些都使用 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

xmlstarlet sel -t -m "*" -c "*[not(self::some[@name != 'A'])]" database.xml

产量

<some name="A"/><text>this is some text to be applied...</text><project>
<test deeper="structure"/>
</project>

但这隐藏了我的宝贵 <database> tag .除了缩进,这不是问题...并且在 <some> 时不起作用不是 <database> 的直系后代, children <project>例如。

我想要得到的是数据库原样,但是所有<some>删除了名为 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

关于xmlstarlet:过滤掉具有属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33279377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com