Python xmltodict:如何保留XML元素顺序?

时间:2016-01-06 15:03:44

标签: python xml xmltodict

我正在使用 xmltodict 进行XML解析/解析,我需要在处理一个文档时保留XML元素排序。玩具REPL示例:

>>> import xmltodict
>>> xml = """
... <root>
...   <a />
...   <b />
...   <a />
... </root>
... """
>>> xmltodict.parse(xml)
OrderedDict([('root', OrderedDict([('a', [None, None]), ('b', None)]))])
>>> xmltodict.unparse(_)
'<?xml version="1.0" encoding="utf-8"?>\n<root><a></a><a></a><b></b></root>'

请注意,原始序列[a, b, a]已替换为[a, a, b]。有没有办法用xmltodict保留原始订单?

1 个答案:

答案 0 :(得分:2)

它不是超级优雅,但minidom可以做得很好:

a=np.array([[1,1,10],[1,2,20],[2,1,30],[1,3,40],[2,3,50]])
xy= a[:,:2].tolist()
[[x,y,z] for [x,y,z] in a if [y,x] in xy and x!=y]

[[1, 2, 20], [2, 1, 30]]

您当然可以使用像lxml这样的完整DOM API,但是对于按文档顺序迭代某些节点的适度任务,它可能没有必要。