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) |