【发布时间】:2011-07-21 12:25:29
【问题描述】:
我有以下代码片段:
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>
怎么会?我怎样才能保留评论?
edit:我不关心使用的确切 xml 库,但是,我应该能够对标签进行粘贴更改。不幸的是,lxml 似乎不允许这样做(而且我无法使用正确的命名空间操作)
【问题讨论】:
-
我认为
xml.etree的当前实现不可能做到这一点。解析器从开头剥离注释节点。 -
但是我应该能够通过使用不同的解析器来解决它? (假设有一个不丢弃 cmets)。因为 ElementTree 确实有 CommentNode,你可以创建它,所以我希望在某个地方得到一些支持。
-
这是真的。
xml.etree可以创建一个 Comment 节点并将其序列化为 XML,但不幸的是,其默认解析器不支持反向操作。
标签: python xml elementtree