0

假设我有这个包含这些内容的 test.xml 文件

<d>
  <p>
    <n>hi</n>
    <r>
      <s>1.0</s>
    </r>
  </p>

  <p>
    <n>hello</n>
    <r>
      <s>1.0</s>
    </r>
  </p>
</d>

我想为“hello”对象添加一个新的 <s>2.0</s>,如下所示。

<d>
  <p>
    <n>hi</n>
    <r>
      <s>1.0</s>
    </r>
  </p>

  <p>
    <n>hello</n>
    <r>
      <s>1.0</s>
      <s>2.0</s>
    </r>
  </p>
</d>

我必须使用 shell 脚本来做到这一点。有一种搜索 XML DOM 并使用此处给出的 xmlstarlet 添加标签的方法http://www.technomancy.org/xml/add-a-subnode-command-line-xmlstarlet/。但这仅描述了根据属性值向某些节点添加新标签。我没有任何属性。我该怎么做 ?有没有办法使用 grep 做到这一点?

4

1 回答 1

3
xmlstarlet ed -a '//p[n="hello"]/r/s' -t elem -n s -v 2.0 input.xml

解释:

  • ed==> 编辑
  • -a==> 追加
  • -t==> 输入
  • -n==> 名称
  • -v==> 价值
于 2012-03-19T00:40:51.030 回答