我在XML文档中有以下节点:
<state>
<soso value="3"/>
<good value="1"/>
<bad value="2"/>
<unknown value="0"/>
</state>
我需要根据value
属性的值对其元素进行排序,以便得到以下结果:
<state>
<unknown value="0"/>
<good value="1"/>
<bad value="2"/>
<soso value="3"/>
</state>
如何使用libxml2在python中做到这一点?
答案 0 :(得分:3)
您可以使用state
这种方式对lxml
代码的子项进行排序:
from lxml import etree
data = """
<state>
<soso value="3"/>
<good value="1"/>
<bad value="2"/>
<unknown value="0"/>
</state>
"""
state = etree.fromstring(data)
state[:] = sorted(state, key=lambda x: int(x.attrib.get('value')))
print etree.tostring(state)
打印:
<state>
<unknown value="0"/>
<good value="1"/>
<bad value="2"/>
<soso value="3"/>
</state>
请注意,真的听起来应用XSLT
转换在这里更合乎逻辑,更简单,请参阅:
另见: