将带标签和缩进的XML文件读入Python变量
有没有办法把整个XML文件读到一个Python变量里,并且保留标签和缩进呢?
data = """<?xml version="1.0" encoding="UTF-8" ?>
<uimap>
<page name="login">
<uielement name="username">
<locator>//input[@type='text']</locator>
</uielement>
<uielement name="password">
<locator>//input[@type='password']</locator>
</uielement>
</page>
</uimap>
"""
这个例子比较简单,所以我可以手动输入。但是如果我的XML文件很大,我该怎么把它们读入Python变量呢?用fopen不行,因为它会把所有的字体大小和样式也读进来,这在我的情况下是多余的。
1 个回答
2
import xml.dom.minidom
xmlObject = xml.dom.minidom.parse(xml_fname) # or xml.dom.minidom.parseString(xml_string)
pretty_xml_as_string = xmlObject.toprettyxml()
print(pretty_xml_as_string)
这个回答来自这里: 在Python中美化打印XML
这个方法会添加额外的换行。如果你想让输出看起来和你的数据完全一样,可以试试这个:
import xml.etree.ElementTree as ET
xmlObject = ET.parse(xml_fname) # or ET.fromstring(xml_string)
pretty_xml_as_string = ET.tostring(xmlObject).decode()
print(pretty_xml_as_string)
请注意,这个是针对Python3的。
[OP编辑:] 这是我用过的有效方法
import lxml.etree as etree
x = etree.parse("filename")
print etree.tostring(x, pretty_print = True)