擅长:python、mysql、java
<p>看起来lxml按设置顺序序列化属性:</p>
<pre><code>>>> from lxml import etree as ET
>>> x = ET.Element("x")
>>> x.set('a', '1')
>>> x.set('b', '2')
>>> ET.tostring(x)
'<x a="1" b="2"/>'
>>> y= ET.Element("y")
>>> y.set('b', '2')
>>> y.set('a', '1')
>>> ET.tostring(y)
'<y b="2" a="1"/>'
</code></pre>
<p>注意,当使用ET.SubElement()构造函数传递属性时,Python将构造一个关键字参数字典并将该字典传递给lxml。这会丢失源文件中的任何顺序,因为Python的字典是无序的(或者,它们的顺序是由字符串散列值决定的,这些散列值可能因平台而异,或者实际上因执行而异)。</p>