我想读取一个XML字符串,编辑它并保存为XML文件。
然而,当我执行.write()
时,会出现标题中提到的错误。
我发现使用ElementTree.fromstring(string)
读取XML字符串时,它将创建一个ElementTree.Element
而不是ElementTree
。元素没有写入方法,但ElementTree有。
如何将Element写入XML文件?或者如何创建ElementTree并将我的Element添加到其中,然后使用.write
方法?
我想读取一个XML字符串,编辑它并保存为XML文件。
然而,当我执行.write()
时,会出现标题中提到的错误。
我发现使用ElementTree.fromstring(string)
读取XML字符串时,它将创建一个ElementTree.Element
而不是ElementTree
。元素没有写入方法,但ElementTree有。
如何将Element写入XML文件?或者如何创建ElementTree并将我的Element添加到其中,然后使用.write
方法?
ElementTree.fromstring(string)
读取xml字符串时,实际上会创建一个ElementTree.Element
而不是ElementTree
本身。是的,你会得到顶层元素(也称为“文档元素”)。write
方法,但ElementTree
有。
ElementTree
构造函数签名如下:ElementTree
(element=None, file=None)
class xml.etree.ElementTree.ElementTree(element=None, file=None)
import xml.etree.ElementTree as ET
doc = ET.fromstring("<test>test öäü</test>")
tree = ET.ElementTree(doc)
tree.write("test.xml", encoding="utf-8")
在编写XML文件时,您始终应该指定编码方式。大多数情况下,UTF-8是最好的选择。
如果有人在尝试使用ElementTree写入XML文件时遇到了不清楚的错误信息,并且花费了太长时间来解决(就像我一样),那么以下内容可能会对你有所帮助:
File "/usr/lib/python3.5/xml/etree/ElementTree.py", line 788, in _get_writer
write = file_or_filename.write
AttributeError: 'str' object has no attribute 'write'
在我的情况下,问题只是因为我尝试写入xml文件的目录路径不存在!例如:
tree.write("/FolderDidNotExist/test.xml", encoding="utf-8")
一个简单的mkdir /FolderDidNotExist
就搞定了。没有错误了。(当然,这个错误信息可能需要一些“关爱”,所以我在这里发布,以防我再次忘记它代表什么[我已经忘了],需要再次谷歌)