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

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

objectify.parse(xmlPath, parserWithSchema)

但是XML文件可能会在奇怪的地方包含注释:

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

这是一种在解析之前不加载或删除注释的方法吗?

1个回答

21

在解析器上设置remove_comments=True文档):

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)

希望这有所帮助。

1
这对我没有起作用。正确的方法是使用parser = objectify.makeparser(remove_comments=True),如此处所示https://dev59.com/WFjUa4cB1Zd3GeqPUsta#7513498 - RedX
@RedX 谢谢,我已经相应地改进了答案。 - alecxe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接