【发布时间】:2014-07-30 14:16:52
【问题描述】:
我想写以下 lxml etree 子元素:
<ElementProtocolat0x3803048>,
<ElementStudyEventDefat0x3803108>,
<ElementFormDefat0x3803248>,
<ElementItemGroupDefat0x38032c8>,
<ElementClinicalDataat0x3803408>,
<ElementItemGroupDataat0x38035c8>,
<ElementFormDefat0x38036c8>,
以预定义的顺序写入我的 odm xml 文件。即
<ElementProtocolat0x3803048>,
<ElementStudyEventDefat0x3803108>,
<ElementFormDefat0x3803248>,
<ElementFormDefat0x38036c8>,
<ElementItemGroupDefat0x38032c8>,
<ElementItemGroupDataat0x38035c8>,
<ElementClinicalDataat0x3803408>,
....
有没有办法对元素进行排序,即使用预定义的列表?
predefined_order = ['Protocol', 'StudyEventDef','FormDef','ItemGroupDef','ItemDef','CodeList']
【问题讨论】:
-
ClinicalData在哪里? -
哦,对不起,我忘了它在最后一个位置..predefined_order = ['Protocol', 'StudyEventDef','FormDef','ItemGroupDef','ItemDef','CodeList', '临床数据']
-
是列表中的子元素字符串吗?
-
不,它们在 ElementTree 对象中:etree.SubElement(root, 'FormDef')
-
您是在问如何重新排序 lxml 树,还是在问如何根据预定义的列表进行排序?如果是前者,见stackoverflow.com/questions/8385358/lxml-sorting-tag-order
标签: python sorting lxml elementtree