读取带有标记的XML文件并将其缩进到python变量中

Read an XML file with tags and indentation into a python variable

本问题已经有最佳答案,请猛点这里访问。

有没有一种方法可以通过标记和缩进将整个XML文件读取到python变量中?

1
2
3
4
5
6
7
8
9
10
11
12
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
3
4
5
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

这会添加额外的换行符。如果希望输出与数据完全相同,可以尝试以下操作:

1
2
3
4
5
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)

请注意,这是给Python的。

[操作编辑:]

1
2
3
import lxml.etree as etree
x = etree.parse("filename")
print etree.tostring(x, pretty_print = True)