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
相关产品推荐
相关产品推荐

