python - 如何使用 lxml 删除 XML 文档根元素之外的注释
问题描述
我有一些 Python,我正在尝试从我无法控制的各种 XML 文档中删除所有注释。这应该能够处理任何有效的 XML。这是到目前为止的代码:
tree = lxml.etree.parse(path_to_xml_file)
for c in tree.xpath('//comment()'):
c.getparent().remove(c)
此代码在此特定 XML 文件上崩溃:
<!-- This comment can't be removed. -->
<foo>
<!-- This comment can be removed. -->
</foo>
无法删除第一条评论,因为它没有父元素。c.getparent()
返回None
该评论。我没有看到有关如何从 XML 树中删除节点的任何其他文档。这是有效的 XML。那么如何删除这条评论呢?
解决方案
要删除所有评论,请使用XMLParser
with remove_comments=True
。
from lxml import etree
parser = etree.XMLParser(remove_comments=True)
tree = etree.parse("test.xml", parser)
推荐阅读
- android - MVVMCross Native Android Progressbar 移动元素与当前进度
- c - CS50 CAESAR - 不同的输出取决于语句的位置,但我不明白为什么
- equation - 将程序员的函数转换为数学符号
- c - 在 C 中编程时使用 sqlite3.h 库时找不到文件
- vb.net - VB.NET 自动保存文本文件多个
- c# - 无法在 .Net Core3.1 Web API 服务中上传大文件
- google-app-engine - Google App Engine - 将应用程序配置为始终以测试版部署
- android - 使用分页更改 recyclerview 中项目的状态
- java - react + spring boot 上传文件和表单数据
- python - 从 geopandas GDF 导出 geoJSON 后的错误结果:无效的字段类型