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

Python 3.8处理FDA大XML文件时如何获取Element的XML文本?

获取Python xml.etree.ElementTree Element的XML文本表示

要把Element对象转换成它对应的XML字符串,你需要使用xml.etree.ElementTree.tostring()方法——这是Python标准库提供的专门用来序列化Element为XML文本的工具。

解决方法示例

首先确保你导入了xml.etree.ElementTree模块,然后在你的循环中修改代码如下:

import xml.etree.ElementTree as ET

for xml_filename in xml_filenames:
    for evt, elem in ET.iterparse(xml_filename):
        if elem.tag == 'safetyreport':
            # 将Element序列化为XML字符串
            # encoding='unicode'让返回值直接是str类型(Python 3适用)
            # method='xml'指定输出格式为标准XML
            xml_content = ET.tostring(elem, encoding='unicode', method='xml')
            print(xml_content)
            
            # 重要:处理完元素后调用clear()释放内存,避免大文件内存溢出
            elem.clear()

参数说明

  • encoding='unicode':在Python 3中使用这个参数会直接返回字符串类型的XML内容,如果省略它会返回bytes对象,你需要用.decode('utf-8')转换成字符串。
  • method='xml':可选参数,默认就是xml,也可以指定为html或text,这里我们需要标准XML输出,所以保持默认即可。
  • elem.clear():因为iterparse默认会保留所有解析过的元素引用,处理大型XML时必须调用这个方法释放内存,否则你的内存占用会持续增长,失去用iterparse的意义。

为什么你之前的尝试没效果?

  • print(elem):直接打印Element对象只会输出它的内存地址引用,这是Python对象默认的__repr__行为,不会输出XML内容。
  • elem.items():这个方法只返回元素的属性键值对,不包含标签和子元素的XML结构。
  • elem.getchildren():这只是获取元素的子元素列表,无法得到整个元素的完整XML表示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:33:04