在 lxml 中解析 XML 时如何不加载注释

Posted

技术标签:

【中文标题】在 lxml 中解析 XML 时如何不加载注释【英文标题】:How to not load the comments while parsing XML in lxml 【发布时间】:2013-08-21 06:01:20 【问题描述】:

我尝试像这样使用 lxml 在 Python 中解析 XML 文件:

objectify.parse(xmlPath, parserWithSchema)

但 XML 文件可能在奇怪的地方包含 cmets:

<root>
    <text>Sam<!--comment-->ple text</text>
    <!--comment-->
    <float>1.2<!--comment-->3456</float>
</root>

解析前不加载或删除cmets的方法?

【问题讨论】:

【参考方案1】:

在解析器上设置remove_comments=True (documentation):

from lxml import etree, objectify

parser = etree.XMLParser(remove_comments=True)
tree = objectify.parse(xmlPath, parser=parser)

或者,使用makeparser() 方法:

parser = objectify.makeparser(remove_comments=True)
tree = objectify.parse(xmlPath, parser=parser)

希望对您有所帮助。

【讨论】:

这对我不起作用。正确的方法是使用parser = objectify.makeparser(remove_comments=True),如此处所示***.com/a/7513498/551045 @RedX 谢谢,我已经相应地改进了答案。

以上是关于在 lxml 中解析 XML 时如何不加载注释的主要内容,如果未能解决你的问题,请参考以下文章

如何解决ERROR.Failed to parse XML in AndroidManifest.xml in Flutter的问题?在Flutter中解析AndroidManifest.xml中的X

如何使用 indexpath 进行 xml 解析

解析 JSON 文件数据后,在结果 XML 中添加注释

如何使用 spark databricks xml 解析器从 Hdfs 目录加载所有 xml 文件

Thymeleaf常用语法:模板注释

如何在 Spring 中以编程方式解析属性占位符