我有这样的东西
<?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
属性的属性。