gpt4 book ai didi

python - 如何防止 xml.ElementTree fromstring 删除 commentnode

转载 作者:太空狗 更新时间:2023-10-29 18:25:57 25 4
gpt4 key购买 nike

我有以下代码片段:

    from xml.etree.ElementTree import fromstring,tostring
mathml = fromstring(input)
for elem in mathml.getiterator():
elem.tag = 'm:' + elem.tag
return tostring(mathml)

当我输入以下input时:

<math>
<a> 1 2 3 </a> <b />
<foo>Uitleg</foo>
<!-- <bar> -->
</math>

结果是:

<m:math>
<m:a> 1 2 3 </m:a> <m:b />
<m:foo>Uitleg</m:foo>

</m:math>

怎么会?我怎样才能保留评论?

编辑:我不关心使用的确切 xml 库,但是,我应该能够对标签进行粘贴更改。不幸的是,lxml 似乎不允许这样做(而且我不能使用正确的命名空间操作)

最佳答案

您不能使用 xml.etree,因为它的解析器会忽略注释(顺便说一句,这对于 xml 解析器来说是可以接受的行为)。但是,如果您使用(兼容的)lxml 就可以库,它允许您配置 parser options .

from lxml import etree

parser = etree.XMLParser(remove_comments=False)
tree = etree.parse('input.xml', parser=parser)
# or alternatively set the parser as default:
# etree.set_default_parser(parser)

这是迄今为止最简单的选择。如果你真的必须使用 xml.etree,你可以尝试连接你自己的解析器,尽管即使那样,评论也不受官方支持:看看 this example (来自 xml.etree 的作者)(顺便说一下,似乎仍然可以在 python 2.7 中工作)

关于python - 如何防止 xml.ElementTree fromstring 删除 commentnode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com