You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:50:49