3
我有一个包含许多SVG的文件夹。从所有SVG中,我需要删除具有特定ID的标签。有太多的文件需要手工完成,所以我一直在研究一个shell脚本来为我做,但无法弄清楚如何使用xmlstarlet去除标签。使用xmlstarlet通过id删除SVG中的节点
例如,假设我们有foo.svg:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="delete"/>
<g id="keep"/>
</svg>
然后发出命令:xmlstarlet ed -d "g[@id='delete']" foo.svg > bar.svg
会导致它在:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="keep"/>
</svg>
,但事实并非如此。 bar.foo仍然包含<g id="delete"/>
。
有谁知道删除<g id="delete"/>
标记的正确命令?或者我可以使用任何其他工具来批处理SVG文件以摆脱不需要的标记?
干杯,多米尼克
感谢您指出了这一点,我现在修正了错字。 – user473453