xmltodict将XML转换为Python字典。它支持名称空间。我可以按照主页上的示例成功地删除名称空间。但是,我无法从XML中删除名称空间,也无法确定原因?这是我的XML:
<?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>
并使用:
^{pr2}$我得到:
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中有什么东西阻止了进程名称空间修改的正常工作?在
xmltodict
基于expat
,因此名称空间应应用于类名,而不是属性名:分析时使用:
^{pr2}$输出:
访问它很容易:
只有当您有多个同名属性(例如多个id或多个price等)时才需要属性名称空间,在这种情况下,我无法让}来正确解析它。但是YMMV。在
expat
或{相关问题 更多 >
编程相关推荐