2013-04-04 41 views
1

我想知道哪些是最好的方法来删除蔬菜产品节点而不影响肉制品节点。如何从命令行删除父XML节点

<Product> 
    <Type>Meat</Type> 
    <Object> 
     <ID>1</ID> 
    </Object> 
    </Product> 
<Product> 
    <Type>Vegetables</Type> 
    <Object> 
     <ID>1</ID> 
    </Object> 
    </Product> 
+0

示例代码片段没有完整的XML文件。我们可以假设你的意思是一个带有根标签的xml文件吗? – halloleo 2014-02-02 06:10:17

回答

0

将您的片段包装到顶级标记中以创建格式良好的XML文件。然后使用例如命令行工具xmlstarlet修改XML。

对于你的情况staep一步的指示:

  1. 添加一个顶级标签,比如说,MyTopLevelTag,让你的XML文件看起来像:

    肉类 蔬菜

保存为how-to-remove-vegetables_wrapped.xml

  1. 安装xmlstarlet。 (在OSX下,您可以使用homebrew)。

  2. 键入你的shell:

    XML编辑-d “/ MyTopLevelTag /产品[类型= '蔬菜']” 怎么去除的-vegetables_wrapped.xml

神奇的是在XPath /MyTopLevelTag/Product[Type = 'Vegetables']中:您选择Product标记,但您将其限制为type的值为'Vegetables'的子项。