将标记和缩进的XML文件读入python变量

时间:2014-08-13 23:16:41

标签: python xml file parsing

有没有办法将整个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 个答案:

答案 0 :(得分:1)

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)

从这里回答:Pretty printing XML in Python

这会增加额外的换行符。如果您希望输出看起来与数据完全相同,可以尝试:

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)