小编pan*_*nda的帖子

使用漂亮的打印和编码声明在 Python 中编写 .xml

我必须创建一个具有漂亮打印效果和编码声明的.xml文件。它应该看起来像这样:

\n
<?xml version='1.0' encoding='utf-8'?>\n<main>\n    <sub>\n        <name>Ana</name>\n        <detail />\n        <type>smart</type>\n    </sub>\n</main>\n
Run Code Online (Sandbox Code Playgroud)\n

我知道如何获得漂亮的打印和声明,但不是同时获得。\n要获得 UTF-8 声明,但没有漂亮的打印,我使用以下代码:

\n
f = open(xmlPath, "w")\net.write(f, encoding='utf-8', xml_declaration=True) \nf.close()\n
Run Code Online (Sandbox Code Playgroud)\n

但是如果我想获得漂亮的打印结果,我必须将 xml 树转换为字符串,并且我将丢失声明。我使用这段代码:

\n
from xml.dom import minidom\nxmlstr = minidom.parseString(ET.tostring(root)).toprettyxml(indent="   ")\nwith open(xmlPath, "w") as f:\n    f.write(xmlstr.encode('utf-8'))\n    f.close()\n
Run Code Online (Sandbox Code Playgroud)\n

通过最后的代码,我得到了漂亮的打印结果,只是第一行是:

\n
<?xml version="1.0" ?>\n
Run Code Online (Sandbox Code Playgroud)\n

我不妨将其替换为

\n
<?xml version='1.0' encoding='utf-8'?>\n
Run Code Online (Sandbox Code Playgroud)\n

但我不认为这是最Pythonesque的方法。

\n

我使用 xml 模块,并且不喜欢安装额外的模块,因为该脚本必须使用标准 Python 从不同的计算机上运行。但如果不可能,我会安装其他模块。

\n

稍后编辑:

\n

最后,在 Lenz 的帮助下,我使用了这个:

\n
#ET=lxml.etree\nxmlPath=os.path.join(output_folderXML ,"test.xml")\nxmlstr= ET.tostring(root, encoding='UTF-8', xml_declaration=True, pretty_print=True)\nwith open(xmlPath, "w") as f:\n …
Run Code Online (Sandbox Code Playgroud)

xml pretty-print utf-8 python-2.7

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

pretty-print ×1

python-2.7 ×1

utf-8 ×1

xml ×1