如何用Python XML ElementTree库将XML解析为字符串而非字典
问题
我希望使用Python XML ElementTree库解析XML文件。XML数据示例:
<stat pass="2" fail="1" skip="0" id="s1-s2" name="Webview">Test passed</stat>
我想将XML数据以与原文件完全一致的格式解析并存储为Python字符串,即:
string = '<stat pass="2" fail="1" skip="0" id="s1-s2" name="Bankwebview">Test passed</stat>'
目前我仅了解.attrib方法和.text方法,它们返回的格式如下:
def extract_testcase(xml_file): tree = ET.parse(xml_file) root = tree.getroot() # 获取根<robot>数据 root_att = root.attrib # {'pass':'2', 'fail':'1', 'skip':'0', 'id':'s1-s2', 'name':'Webview'} root_text = root.text # 'Test passed'
这种情况下我需要再次处理数据才能得到目标字符串,ElementTree库中是否有直接实现该需求的函数?
解决方案
ElementTree库提供了ET.tostring()(Python 3.2及以上版本支持)函数,可直接将XML元素转换为对应格式的字符串,无需手动拼接属性和文本。
代码示例
import xml.etree.ElementTree as ET def extract_testcase(xml_file): tree = ET.parse(xml_file) root = tree.getroot() # encoding='unicode'参数确保返回Python字符串而非字节串 xml_string = ET.tostring(root, encoding='unicode') return xml_string
调用该函数后,返回的xml_string会包含目标元素的所有属性和文本内容,格式与原XML元素一致。
额外说明
如果需要完全精确保留原文件的所有格式细节(比如原始空格、换行符),ElementTree在解析过程中可能会忽略部分空白字符。这种情况下,直接读取文件原始内容会更合适:
def read_raw_xml(xml_file): with open(xml_file, 'r', encoding='utf-8') as f: return f.read()
这种方式不会对XML内容做任何解析处理,完全保留原始格式,但无法进行后续的XML结构操作。
内容的提问来源于stack exchange,提问作者ronmakh
相关产品推荐
相关产品推荐

