python - 如何不加载整个文档,而是逐行加载 - xml,python,使用 xml.etree.ElementTree
问题描述
我使用了 xml.etree.ElementTree 库,“for”循环,理论上应该逐行读取。
不幸的是,这可能不是,因为在执行脚本后它会收到消息'Killed',所以脚本不会逐行读取。任何人都可以帮助我,提出一些建议。
我是初学者。
这是我的代码:
from xml.etree import ElementTree
file_name = 'input.xml'
full_file = os.path.abspath(os.path.join('data', file_name))
dom = ElementTree.parse(full_file)
root = dom.getroot()
for offer in root.findall('offer'):
for category in offer.findall('category'):
if category.text == 'f':
a = ElementTree.SubElement(offer, 'freedelivery')
a.text = 'true'
dom.write(output.xml) ```
解决方案
我对您的代码有以下评论:
dom = ElementTree.parse(full_file)
读取整个输入文件(不是逐行)。您的 2 个嵌套循环:
for offer in root.findall('offer'): for category in offer.findall('category'):
可以用一个循环替换:
for category in root.findall('offer/category'):
写入更新的dom树的指令应该在第一个for循环之外(删除它的缩进)。
最后,可能是您的代码失败的基本原因是输出文件名应该用引号引起来,因此将其更改为
dom.write('output.xml')
. 否则会出现执行错误。
推荐阅读
- ios - UITableViewAutomaticDimension 的约束错误
- java - 阶段在 javafx 中显示为空
- python - 如何在 PYTHON 中编写分层查询
- bash - 无法在 bash 中循环遍历数组以进行 PostgreSQL 查询导出
- r - 使用 R 实现具有不同距离度量的 KNN
- postgresql - Postgres Insert as select from table 忽略任何错误
- javascript - 使用 newsapi 时,我收到错误“Uncaught SyntaxError: Unexpected end of JSON input”
- php - 将术语 slug 作为类添加到 Woocommerce 中的产品类别 div 标签
- android - 使用 Canvas 时禁用滚动
- python - Python 的 sh 模块 - 如何显示构造的命令字符串