如何在Python中按给定顺序对XML数据进行排序

时间:2013-12-03 13:53:42

标签: python xml sorting

不确定这是不是一个重复的问题..我试图找到一个相关的答案,但还没找到它......我去了......

以下是我在XML格式数据中的内容

<item>
<title>level red</title>
<link>something</link>
<item>

<item>
<title>level green</title>
<link>something</link>
<item>

<item>
<title>level yellow</title>
<link>something</link>
<item>

<item>
<title>level red</title>
<link>something</link>
<item>

<item>
<title>level yellow</title>
<link>something</link>
<item>

<item>
<title>level red</title>
<link>something</link>
<item>

<item>
<title>level green</title>
<link>something</link>
<item>

<item>
<title>level black</title>
<link>something</link>
<item>

我的目标是将这些数据排在第一级红色,绿色级别和黄色等级出现在xml列表中,其余级别保持不变......

我的问题是如何使用Python来解决这个问题?

我知道我可能不得不使用

dom =  xml.dom.minidom.parseString(stripTags(data))
items = dom.getElementsByTagName('item')

item.getElementsByTagName("title")[0].childNodes
item.getElementsByTagName("link")[0].childNodes

我也看过像这样的代码按顺序排序

sorted_b = []
for i in a:
    for j in b:
        if j.id == i:
            sorted_b.append(j)
            break

我的问题是如何将代码放在一起,以后我如何按照给定的颜色优先顺序对数据进行排序?

赞赏任何建议或指示

1 个答案:

答案 0 :(得分:1)

Python sorted()函数可能会派上用场:

https://wiki.python.org/moin/HowTo/Sorting

特别是使用key = ...参数。 尝试像

这样的东西
def getItemLevel(item):
  return item.getElementsByTagName("title")[0].data

newlist = sorted(itemlist, key=getItemLevel)