使用xmlstarlet删除XML中元素的值

时间:2015-02-25 21:05:08

标签: xml shell xmlstarlet

我正在尝试使用xmlstarlet删除xml中元素的值: 我尝试使用xmlstarlet ed -d命令删除该值但它不起作用。 我还尝试使用xmlstarlet ed -u将值123替换为“”(null)。这也不起作用。

有人可以帮我解决这个问题: 输入:

<?xml version="1.0"?>
<List Name="myList">
  <Dir Path="abc">123</Dir>
  <Dir Path="cde">456</Dir>
  <File Path="xyz">789</File>
  <File Path="xxx">567</File>
</List>

输出:

<List Name="myList">
  <Dir Path="abc"></Dir>
  <Dir Path="cde"></Dir>
  <File Path="xyz"></File>
  <File Path="xxx"></File>
</List>

我想删除值“123”,“456”......

提前致谢

1 个答案:

答案 0 :(得分:0)

要删除所有文本节点,请保留元素及其属性:

xmlstarlet ed -d '//text()' <input.xml

...或者,用空字符串替换那些文本节点的内容:

xmlstarlet ed -u '//text()' -v '' <input.xml