栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在python xml.etree.ElementTree中的迭代器中删除节点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在python xml.etree.ElementTree中的迭代器中删除节点

您无法在不知道父节点的情况下删除节点,但是该

xml.etree
软件包无法为您提供从给定节点访问父节点的任何方式。

解决此问题的唯一方法是匹配父节点:

for node in root.iter():    if some_condition_matches_parent:        for child in list(node.iter()): if some_condition_matches_child:     node.remove(child)

如果切换到

lxml
库(该库实现相同的API,但具有其他增强功能),则 可以 从任何给定节点检索父节点:

node.getparent().remove(node)

注意,虽然纯Python实现

Element.getiterator()
返回一个列表对象,但在ElementTree模块的C实现中(在Python
2上单独导入,如果可用,则在Python 3上透明导入),该
getiterator()
方法返回一个实时生成器,该生成器需要一个副本制作。

最重要的是,该

Element.getiterator()
方法已在Python 3.2中弃用,并将在Python
3.9中完全删除。我
node.iter()
在外部循环和
list(node.iter())
内部循环中都替换了它的用法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/646139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号