2
我有一个XML文件,如下所示:Python和XML结构字典
<?xml version="1.0"?>
<max:SyncObject xmlns:max="http://www.ibm.com/max">
<max:ObjectSet>
<max:PARENT action="AddChange">
<max:FIELD1>string</max:FIELD1>
<max:FIELD2>string</max:FIELD2>
<max:FIELD3>string</max:FIELD3>
<max:FIELD4>string</max:FIELD4>
<max:FIELD5>string</max:FIELD5>
<max:FIELD6>string</max:FIELD6>
<max:FIELD7>string</max:FIELD7>
<max:CHILD1 action="Ignored">
<max:CH1FIELD1 action="Ignored">
<max:CH1SUB1>string</max:CH1SUB1>
<max:CH1FIELD2>string</max:CH1FIELD2>
</max:CHILD1>
<max:CHILD2 action="Ignored">
<max:CH2FIELD1>string</max:CH2FIELD1>
</max:CHILD2>
</max:PARENT>
</max:ObjectSet>
</max:SyncObject>
和我的最终结果,我想实现如下:
{'PARENT': ['FIELD1', 'FIELD2', 'FIELD3', 'FIELD4', 'FILED5', 'FIELD6', 'FIELD7', 'CHILD1', 'CHILD2']}, {'CHILD1': ['CH1FIELD1', 'CH1FIELD2'], 'CHILD2': ['CH2FIELD1'], 'CH1FIELD1':['CH1SUB1']}
所以我尝试了好几种不同可以从XML文件中提取FIELD1
,FIELD2
...标签,同时仍然保持结构,因为您可以看到PARENT
字典与其他字典是分开的,并且包含所有正好位于下一级的标签。儿童标签也是如此。行动attrib是不需要的,因为这将通过班级内的其他手段来指定。
看来,大多数lxml和elementtree适合从XML标签中提取属性,而不是标签本身。
任何人都可以指出我正确的方向提取标签(FIELD NAMES)没有前缀,值或任何属性,并保留结构?
谢谢!
谢谢,你能解释一下这个回报以及如何操作呢? – txDMTN 2015-02-24 00:27:05
@txDMTN当然,它会返回一个'OrderedDict'结构,您可以将其作为普通字典进行基本操作,但它保留了顺序。 – alecxe 2015-02-24 01:12:10