import xml.etree.ElementTree
# Open original file
et = xml.etree.ElementTree.parse('file.xml')
# Append new tag: <a x='1' y='abc'>body text</a>
new_tag = xml.etree.ElementTree.SubElement(et.getroot(), 'a')
new_tag.text = 'body text'
new_tag.attrib['x'] = '1' # must be str; cannot be an int
new_tag.attrib['y'] = 'abc'
# Write back to file
#et.write('file.xml')
et.write('file_new.xml')
my_file = open(filename, "r")
lines_of_file = my_file.readlines()
lines_of_file.insert(-1, "This line is added one before the last line")
my_file.writelines(lines_of_file)
有用的Python XML解析器:
其中任何一个都比尝试将XML文件更新为文本字符串要好。
这对你意味着什么:
用您选择的XML解析器打开文件,找到您感兴趣的节点,替换该值,序列化文件。
使用
ElementTree
:注意:输出写入
file_new.xml
供您实验,写入file.xml
将替换旧内容。要点:ElementTree库将属性存储在dict中,因此,不会保留这些属性在xml文本中列出的顺序。相反,它们将按字母顺序输出。 (同时,删除注释。我觉得这很烦人)
ie:xml输入文本
<b y='xxx' x='2'>some body</b>
将输出为<b x='2' y='xxx'>some body</b>
(在按字母顺序定义顺序参数之后)这意味着当将原始文件和更改的文件提交到修订控制系统(如SVN、CSV、ClearCase等)时,这两个文件之间的差异可能看起来不太好。
简单快捷的方法是使用
readlines()
将整个文件读入一个字符串列表,而您绝对不应该这样做。我写这篇文章是为了防止快速而简单的解决方案是你想要的。只需使用
open()
打开文件,然后调用readlines()
方法。你将得到文件中所有字符串的列表。现在,您可以轻松地在最后一个元素之前添加字符串(只需在最后一个元素之前向列表中添加一个元素)。最后,您可以使用writelines()
将它们写回文件。一个例子可能会有帮助:
你不应该这样做的原因是,除非你做的事情很快,否则你应该使用XML解析器。这是一个库,允许您使用DOM、树和节点等概念智能地使用XML。这不仅是使用XML的正确方法,也是标准方法,使您的代码更易于移植,也更易于其他程序员理解。
蒂姆的回答提到了为此检查^{} ,我认为这是个好主意。
相关问题 更多 >
编程相关推荐