我正在使用 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
保留原始订单?
答案 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,但是对于按文档顺序迭代某些节点的适度任务,它可能没有必要。