【发布时间】:2011-12-28 03:16:57
【问题描述】:
在 python 2.7(使用 etree 1.3)中,我可以抑制元素上的 XML 前缀,如下所示:
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml.etree.ElementTree as etree
>>> etree.VERSION
'1.3.0'
>>> something = etree.Element('{http://some.namespace}token')
>>> etree.tostring(something)
'<ns0:token xmlns:ns0="http://some.namespace" />'
>>> etree.register_namespace('', 'http://some.namespace')
>>> etree.tostring(something)
'<token xmlns="http://some.namespace" />'
register_namespace 函数是在 1.3 中添加的。我正在尝试以与版本 1.2.6 的 python 2.6 的 etree 兼容的方式删除前缀。这是我尝试过的:
Python 2.6.7 (r267:88850, Jul 31 2011, 19:30:54)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml.etree.ElementTree as etree
>>> etree.VERSION
'1.2.6'
>>> something = etree.Element('{http://some.namespace}token')
>>> etree.tostring(something)
'<ns0:token xmlns:ns0="http://some.namespace" />'
>>> etree._namespace_map['http://some.namespace'] = ''
>>> etree.tostring(something)
'<:token xmlns:="http://some.namespace" />'
这不是我想要的。前缀仍然存在,但为空白。有什么办法可以彻底去除?
【问题讨论】:
-
查看我在*.com/a/25920989/2593383 下的回答以获得更通用的解决方案
标签: python xml xml-serialization elementtree