「XML」- 杂记

  CREATED BY JENKINSBOT

操纵工具

XMLStarlet

可以用xmlstarlet命令从命令行中修改XML文件。也是在修改libvirt的域定义文件时遇到的需求,那时候我有一堆的XML文件要修改……

对于如下XML内容:

<root>
   <node user="user1">
      <tag k="name" v="name1"/>
    </node>
    <node user="user2">
      <tag k="network" v="nw1"/>
    </node>
   <node user="user3">
      <tag k="foo" v="bar"/>
    </node>
</root>

如果向删除第一个<node>节点:

<node user="user1">
	<tag k="name" v="name1"/>
</node>

可以执行xmlstarlet ed -d '//root/node[tag[@v="name1"]]' /path/to/file.xml命令,修改后的内容会写入标准输出。如果想写入文件,可以使用-L, --inplace选项,即xmlstarlet ed -L -d '//root/node[tag[@v="name1"]]' /path/to/file.xml命令。

参考文献
Remove XML Nodes using Unix Command Line
Start working with XMLStarlet

xsltproc

这个也可以,不过好像挺复杂的,没深入研究。

参考文献

Edit xml file using shell script / command