如何用xml.etree读取压缩包中的XML文件并获取其树结构
从Catrobat压缩包读取XML树结构的正确方法
错误原因分析
z.ElementTree.parse写法错误:ZipFile对象不存在ElementTree属性,ElementTree是你导入的XML处理模块,需直接调用其方法。- 直接
ElementTree.parse("code.xml")找不到文件:code.xml是压缩包内部的文件,并非本地磁盘上的独立文件,无法直接通过文件名访问。
正确实现代码
方法一:通过文件对象解析XML
from xml.etree import ElementTree import zipfile with zipfile.ZipFile('knifk.catrobat') as z: # 打开压缩包内的code.xml文件 with z.open('code.xml') as xml_file: # 从文件对象解析生成XML树 xml_tree = ElementTree.parse(xml_file) # 获取根节点,后续可基于此操作XML结构 root_node = xml_tree.getroot() # 示例:打印根节点标签 print(root_node.tag)
方法二:读取文件内容后解析
from xml.etree import ElementTree import zipfile with zipfile.ZipFile('knifk.catrobat') as z: # 读取压缩包内code.xml的字节内容,解码为字符串 xml_content = z.read('code.xml').decode('utf-8') # 从字符串解析生成XML树的根节点 root_node = ElementTree.fromstring(xml_content) # 示例:打印根节点标签 print(root_node.tag)
内容的提问来源于stack exchange,提问作者Knifick
相关产品推荐
相关产品推荐

