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

Python中如何将XML格式字符串解析为dict字典或JSON对象

解析方法说明

所有主流编程语言的XML解析库都原生支持直接读取XML格式的字符串完成解析,不需要先将字符串写入本地XML文件再读取,完全可以满足你的解析需求。

注意:你提供的示例XML存在标签匹配错误:开标签<confidence>对应的闭合标签错误写为</confidence_booster>,需要先修正这类标签不匹配的问题,才能被XML解析器正常识别,修正后的合法XML片段如下:

<Pattern id="001" name="Tesla" type="car">
    <trigger>electric</trigger>
    <confidence>0.9</confidence>
    <condition>
      {car ^12}
    </condition>
</Pattern>
实现示例(Python)

无第三方依赖方案

使用Python标准库xml.etree.ElementTree即可完成解析,不需要额外安装依赖,可直接输出符合要求的字典,也可一键转JSON:

import xml.etree.ElementTree as ET
import json

def parse_xml_str(xml_str):
    root = ET.fromstring(xml_str)
    res = root.attrib
    for child in root:
        content = child.text.strip() if child.text else ""
        # 按需做类型转换,比如将confidence字段转为浮点数
        if child.tag == "confidence":
            try:
                content = float(content)
            except ValueError:
                pass
        res[child.tag] = content
    return res

# 传入XML字符串直接解析
xml_text = '''<Pattern id="001" name="Tesla" type="car">
    <trigger>electric</trigger>
    <confidence>0.9</confidence>
    <condition>
      {car ^12}
    </condition>
</Pattern>'''

pattern = parse_xml_str(xml_text)
# 输出的字典结构和预期完全一致
print(pattern)

# 如需转JSON,直接调用json模块方法即可
pattern_json = json.dumps(pattern, indent=2, ensure_ascii=False)
print(pattern_json)

运行后得到的字典结果:

{
    "id": "001",
    "name": "Tesla",
    "type": "car",
    "trigger": "electric",
    "confidence": 0.9,
    "condition": "{car ^12}"
}

更简便的第三方库方案

如果需要处理更复杂的嵌套XML结构,可以使用xmltodict库,直接传入XML字符串即可输出结构化字典,适配成本更低:

# 安装命令:pip install xmltodict
import xmltodict
import json

parse_result = xmltodict.parse(xml_text)
# 直接转JSON
json_result = json.dumps(parse_result, indent=2, ensure_ascii=False)

如果是其他编程语言(Java/Go/JS等),对应内置/主流第三方XML解析库也都支持字符串入参解析,逻辑和上述Python实现一致,不需要依赖本地文件。

内容的提问来源于stack exchange,提问作者marlon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:39:10