2
xmltodict将XML转换为Python字典。它支持命名空间。我可以按照主页上的示例并成功删除名称空间。但是,我无法从我的XML中删除命名空间,并且无法确定原因?下面是我的XML:用Python中的xmltodict删除名称空间
<?xml version="1.0" encoding="UTF-8"?>
<status xmlns:mystatus="http://localhost/mystatus">
<section1
mystatus:field1="data1"
mystatus:field2="data2" />
<section2
mystatus:lineA="outputA"
mystatus:lineB="outputB" />
</status>
而且使用:
xmltodict.parse(xml,process_namespaces=True,namespaces={'http://localhost/mystatus':None})
我得到:的
OrderedDict([(u'status', OrderedDict([(u'section1', OrderedDict([(u'@http://localhost/mystatus:field1', u'data1'), (u'@http://localhost/mystatus:field2', u'data2')])), (u'section2', OrderedDict([(u'@http://localhost/mystatus:lineA', u'outputA'), (u'@http://localhost/mystatus:lineB', u'outputB')]))]))])
代替:
OrderedDict([(u'status', OrderedDict([(u'section1', OrderedDict([(u'field1', u'data1'), (u'field2', u'data2')])), (u'section2', OrderedDict([(u'lineA', u'outputA'), (u'@lineB', u'outputB')]))]))])
我是不是做一些简单的错误,或有什么关于我的XML阻止process_na间距修改工作正常吗?
我不控制XML源代码,这是否意味着我运气不好,让xmltodict按照我想要的方式工作?如果是这样,你能推荐从我展示的XML开始的最佳方法吗? – proximous 2014-11-04 04:18:40
听起来像它。我对名称空间方面的专家不够肯定。最终,您总是可以使用完整的名称空间提取键,或者编写一些函数,在解析xmltodict树后自己从键中删除http:// * /前缀。 – VooDooNOFX 2014-11-05 01:54:46
谢谢。由于我的XML作为一个字符串开始,我只是在解析之前从字符串中提取它。不理想,但现在我明白了为什么它不起作用,通过字符串操作来改变它并没有错。 :) – proximous 2014-11-06 12:27:21