gpt4 book ai didi

python - 如何让 Python 的 ElementTree 漂亮地打印到 XML 文件?

转载 作者:IT老高 更新时间:2023-10-28 22:18:12 25 4
gpt4 key购买 nike

背景

我正在使用 SQLite 访问数据库并检索所需的信息。我在 Python 2.6 版中使用 ElementTree 来创建包含该信息的 XML 文件。

代码

import sqlite3
import xml.etree.ElementTree as ET

# NOTE: Omitted code where I acccess the database,
# pull data, and add elements to the tree

tree = ET.ElementTree(root)

# Pretty printing to Python shell for testing purposes
from xml.dom import minidom
print minidom.parseString(ET.tostring(root)).toprettyxml(indent = " ")

####### Here lies my problem #######
tree.write("New_Database.xml")

尝试

我尝试过使用 tree.write("New_Database.xml", "utf-8")代替上面的最后一行代码,但它根本没有编辑 XML 的布局 - 它仍然是一团糟。

我也决定摆弄一下,尝试做:
tree = minidom.parseString(ET.tostring(root)).toprettyxml(indent = " ")<br/>而不是将其打印到 Python shell,这会给出错误 AttributeError: 'unicode' object has no attribute 'write'

问题

当我在最后一行将树写入 XML 文件时,有没有办法像在 Python shell 中一样漂亮地打印到 XML 文件?

我可以使用 toprettyxml()在这里还是有其他方法可以做到这一点?

最佳答案

无论您的 XML 字符串是什么,您都可以将其写入您选择的文件,方法是打开一个文件进行写入并将字符串写入文件。

from xml.dom import minidom

xmlstr = minidom.parseString(ET.tostring(root)).toprettyxml(indent=" ")
with open("New_Database.xml", "w") as f:
f.write(xmlstr)

有一种可能的复杂情况,尤其是在 Python 2 中,它对字符串中的 Unicode 字符既不严格也不复杂。如果您的 toprettyxml 方法返回一个 Unicode 字符串 (u"something"),那么您可能希望将其转换为合适的文件编码,例如 UTF-8。例如。将一个写入行替换为:

f.write(xmlstr.encode('utf-8'))

关于python - 如何让 Python 的 ElementTree 漂亮地打印到 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com