我有一个xml文件,其中元素以某种随机顺序出现。我不得不比较这些文件,但由于元素顺序的改变,这需要手动操作。在
我想找个方法把这些文件分类。有人能给我一些关于这个问题的建议/方法吗。我试图阅读lxml(ElementTree和Element类)的文档,但似乎没有一种方法可以根据xml文本对子元素进行排序。在
我可以根据名称对元素进行排序,但是在属性元素中,如何才能对合法元素childs进行排序?在
输入:-
<root>
<attribute Name="attr2">
<v>
<cstat>
<s>nObjDef2</s>
<s>nObjDef1</s>
</cstat>
</v>
<objects>
<legal>
<o>otype2</o>
<o>otype1</o>
</legal>
</objects>
</attribute>
<attribute Name="attr1">
<v>
<cstat>
<s>nObjDef2</s>
<s>nObjDef1</s>
</cstat>
</v>
<objects>
<legal>
<o>otype2</o>
<o>otype1</o>
</legal>
</objects>
</attribute>
</root>
预期产量:
^{pr2}$
如果要按文本对子节点进行排序,只需找到合法节点并使用对子节点进行排序子级.text作为键:
对每个节点进行排序:
^{pr2}$这将重新排列子对象:
给你:
或者更有效的方法是使用operator.attrgetter代替lambda:
考虑一下XSLT,这是专门为操作和转换XML文件而设计的专用语言。Python的lxml可以运行xslt1.0脚本。具体来说,XSLT维护了可以在模板内运行的^{} 方法:
相关问题 更多 >
编程相关推荐