使用 xmlstarlet 删除 XML 中元素的值

to delete the value of the element in XML using xmlstarlet

我正在尝试使用 xmlstarlet 删除 xml 中元素的值: 我试过 xmlstarlet ed -d 命令来删除该值,但它没有用。 我还尝试使用 xmlstarlet ed -u 将值 123 替换为“”(空)。这也没有用。

有人可以帮助我如何得到这个: 输入:

<?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”...

提前致谢

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

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

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

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