如何使用Python解析MySQL输出的XML格式查询结果
解析MySQL导出XML为字典列表的Python方案
直接使用Python标准库自带的xml.etree.ElementTree模块即可完成需求,无需安装第三方依赖,完全适配你给出的XML结构:
完整代码示例
import xml.etree.ElementTree as ET # 若XML内容存储在文件中,使用ET.parse('文件路径')读取,再调用getroot()获取根节点即可 xml_content = '''<resultset statement="select * from table where id > 5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <field name="name">first</field> <field name="login">2021-08-16 13:44:35</field> </row> <row> <field name="name">second</field> <field name="login">2021-08-18 13:44:35</field> </row> </resultset>''' # 解析XML获取根节点 root = ET.fromstring(xml_content) result_list = [] # 遍历所有行节点 for row_node in root.findall('row'): row_dict = {} # 遍历当前行所有字段节点 for field_node in row_node.findall('field'): # 取字段名属性为键,字段文本为值 col_name = field_node.attrib['name'] col_value = field_node.text row_dict[col_name] = col_value result_list.append(row_dict) # 输出结果为要求的字典列表格式 print(result_list)
输出效果
运行上述代码得到的结果如下,完全匹配需求:
[{'name': 'first', 'login': '2021-08-16 13:44:35'}, {'name': 'second', 'login': '2021-08-18 13:44:35'}]
注意事项
- 模块会自动处理XML中的转义字符,无需手动预处理
- 若某字段无值,
field_node.text会返回None,可根据业务需要自行替换为空字符串等默认值 - 针对你给出的简单XML结构,标准库解析效率足够,无需自行编写解析逻辑
内容的提问来源于stack exchange,提问作者Asara
相关产品推荐
相关产品推荐

