如何解决如何使用 Azure StorageStreamDownloader 中的 lxml iterparse?
我目前正在使用 lxml.etree.iterparse
逐个标记遍历 XML 文件。这在本地工作正常,但我想将 XML 文件移动到 Azure Blob 存储并在 Azure 函数中处理该文件。但是,我在尝试从 StorageStreamDownloader
本地代码
from lxml import etree
context = etree.iterparse('c:\\Users\\',tag='InstanceElement')
for event,elem in context:
# processing of the tag
从 Blob 流式传输
from lxml import etree
from azure.storage.filedatalake import DataLakeServiceClient
connect_str = ''
service = DataLakeServiceClient.from_connection_string(conn_str=connect_string)
System = service.get_file_system_client('')
FileClient = System.get_file_client('')
Stream = FileClient.download_file()
# Stuck on what the input must be for iterparse
context = etree.iterparse(,elem in context:
# processing of the tag
我被困在 iterparse
的输入必须是什么,那么关于如何在流式传输 XML 文件时解析它的任何想法?
解决方法
试试这个:
from lxml import etree
from azure.storage.filedatalake import DataLakeServiceClient
from io import BytesIO
connect_str = ''
service = DataLakeServiceClient.from_connection_string(conn_str=connect_str)
System = service.get_file_system_client('')
FileClient = System.get_file_client('test.xml')
content = FileClient.download_file().readall()
context = etree.iterparse(BytesIO(content),tag='InstanceElement')
for event,elem in context:
print(elem.text)
我的 test.xml
的内容:
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。