使用Python向XML文件添加节点
我在想,是不是更好通过打开文件,找到一个“合适的位置”,然后添加包含XML代码的字符串。还是说用一些库会更好……我其实不太清楚。我知道怎么通过像lxml这样的工具获取XML中的节点和属性,但添加内容的最简单和最佳方法是什么呢?
2 个回答
1
往XML文档里添加节点最安全的方法是先把它加载到一个DOM(文档对象模型)里,然后通过编程的方式添加节点,最后再把它写回去。Python有好几个处理XML的库。我用过minidom,但我没有特别的理由推荐它比其他库更好。
4
你可以使用 lxml.etree.Element 来创建 XML 节点,然后用 append 或 insert 方法把它们添加到 XML 文档中:
data='''\
<root>
<node1>
<node2 a1="x1"> ... </node2>
<node2 a1="x2"> ... </node2>
<node2 a1="x1"> ... </node2>
</node1>
</root>
'''
doc = lxml.etree.XML(data)
e=doc.find('node1')
child = lxml.etree.Element("node3",attrib={'a1':'x3'})
child.text='...'
e.insert(1,child)
print(lxml.etree.tostring(doc))
这样就会得到:
<root>
<node1>
<node2 a1="x1"> ... </node2>
<node3 a1="x3">...</node3><node2 a1="x2"> ... </node2>
<node2 a1="x1"> ... </node2>
</node1>
</root>