mar*_*ema 10 python xml elementtree
我有以下代码片段:
from xml.etree.ElementTree import fromstring,tostring
mathml = fromstring(input)
for elem in mathml.getiterator():
elem.tag = 'm:' + elem.tag
return tostring(mathml)
Run Code Online (Sandbox Code Playgroud)
当我输入以下内容时input:
<math>
<a> 1 2 3 </a> <b />
<foo>Uitleg</foo>
<!-- <bar> -->
</math>
Run Code Online (Sandbox Code Playgroud)
它导致:
<m:math>
<m:a> 1 2 3 </m:a> <m:b />
<m:foo>Uitleg</m:foo>
</m:math>
Run Code Online (Sandbox Code Playgroud)
怎么会?我该如何保留评论?
编辑:我不关心使用的确切xml库,但是,我应该能够对标记进行粘贴更改.不幸的是,lxml似乎不允许这样(我不能使用正确的命名空间操作)
Ste*_*ven 14
你不能用xml.etree,因为它的解析器忽略了注释(顺便说一句,这对于xml解析器来说是可接受的行为).但是,如果您使用(兼容的)lxml库,则可以使用它来配置解析器选项.
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)
Run Code Online (Sandbox Code Playgroud)
到目前为止这是最简单的选择.如果你真的必须使用xml.etree,你可以尝试连接你自己的解析器,尽管那时,评论还没有得到官方的支持:看一下这个例子(来自xml.etree的作者)(似乎仍然可以工作) python 2.7顺便说一下)
| 归档时间: |
|
| 查看次数: |
6457 次 |
| 最近记录: |