【发布时间】:2022-01-27 19:23:31
【问题描述】:
我必须搜索并打印存储在 zip 文件中的多个 XML 文件的结果。 在这种情况下,我的代码运行良好。但是当 zip 文件包含多个子目录并在 XML 文件中显示时
文件“/usr/lib/python3.10/xml/etree/ElementTree.py”,第 1348 行,XML 返回 parser.close() xml.etree.ElementTree.ParseError:找不到元素:第 1 行,第 0 列
这是我的代码(如果所有 XML 文件都存储在没有任何文件夹的 zip 文件中,则效果很好)
import re
import xml.etree.ElementTree as ET
from zipfile import ZipFile
from utils.xml import SRXMLElements
DEFAULT_ZIP = "./resources/another.zip"
def parse_xml(search_pattern) -> None:
with ZipFile(DEFAULT_ZIP, "r") as my_zip:
for file_name in my_zip.namelist():
with my_zip.open(file_name) as my_file:
root = ET.fromstring(my_file.read().decode())
for billSummary in root.iter(SRXMLElements.BillSummaries.value):
for text in billSummary.iter(SRXMLElements.Text.value):
summary_text = text.text
for match in search_pattern.finditer(summary_text):
print(text.text)
for child in billSummary.iter('RECEIVEDDATE'):
print(child.text)
def main() -> None:
search_pattern = re.compile("1941012339")
parse_xml(search_pattern)
if __name__ == "__main__":
main()
from enum import Enum
class SRXMLElements(Enum):
BillSummaries = "Product"
Text = "SERVICETAGNUM"
【问题讨论】:
标签: python xml zip elementtree zipfile