python+libxml2:根据属性值对XML节点的元素进行排序

2024-06-16 16:56:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在XML文档中有以下节点:

<state>
    <soso value="3"/>
    <good value="1"/>
    <bad value="2"/>
    <unknown value="0"/>
</state>

我需要根据value属性的值对其元素进行排序,结果如下:

^{pr2}$

在python中如何使用libxml2实现呢?在


Tags: 文档元素属性节点排序valuexmlunknown
1条回答
网友
1楼 · 发布于 2024-06-16 16:56:46

您可以使用lxmlstate标记的子级进行排序,方法如下:

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)

印刷品:

^{pr2}$

注意,应用XSLT转换听起来更符合逻辑,更简单,请参见:

另请参见:

相关问题 更多 >