小星星 |删除具有指定值的条目
Xmlstarlet | remove entry with specified value
我有这样的东西
<?xml version="1.0"?>
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Menu>
<Name>Personal</Name>
<Directory>xfce-personal.directory</Directory>
<Include>
<And>
<Category>Settings</Category>
<Category>X-XFCE-SettingsDialog</Category>
<Category>X-XFCE-PersonalSettings</Category>
</And>
<Filename>brightness-frontend.desktop</Filename>
<Filename>xscreensaver-properties.desktop</Filename>
</Include>
</Menu>
</Menu>
我想删除
<Filename>brightness-frontend.desktop</Filename>
尝试运行 xmlstartlet
/usr/bin/xmlstarlet ed -d "//Include[Filename='brightness-frontend.desktop']" /tmp/1.xml
但删除所有包含部分,以及所有子项。如何仅删除具有 brightness-frontend.desktop 值的 Filename 节点?
XPath 查询 //Include[Filename='...']
将匹配 Include
节点本身,其中包括其下的所有子节点。请注意 Filename
是一个单独的 XML 元素,而不是 Include
属性上的 属性。
而是使用基于其文本匹配 Filename
属性的 XPath 查询:
//Filename[text()='brightness-frontend.desktop']
我有这样的东西
<?xml version="1.0"?>
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Menu>
<Name>Personal</Name>
<Directory>xfce-personal.directory</Directory>
<Include>
<And>
<Category>Settings</Category>
<Category>X-XFCE-SettingsDialog</Category>
<Category>X-XFCE-PersonalSettings</Category>
</And>
<Filename>brightness-frontend.desktop</Filename>
<Filename>xscreensaver-properties.desktop</Filename>
</Include>
</Menu>
</Menu>
我想删除
<Filename>brightness-frontend.desktop</Filename>
尝试运行 xmlstartlet
/usr/bin/xmlstarlet ed -d "//Include[Filename='brightness-frontend.desktop']" /tmp/1.xml
但删除所有包含部分,以及所有子项。如何仅删除具有 brightness-frontend.desktop 值的 Filename 节点?
XPath 查询 //Include[Filename='...']
将匹配 Include
节点本身,其中包括其下的所有子节点。请注意 Filename
是一个单独的 XML 元素,而不是 Include
属性上的 属性。
而是使用基于其文本匹配 Filename
属性的 XPath 查询:
//Filename[text()='brightness-frontend.desktop']