<p>我想到的是:</p>
<pre><code>xml_arr = [
['root', 1],
['dir', 2],
['book1',3],
['chapter1', 4],
['page1', 5],
['page2', 5],
['book2', 3],
['book3', 3],
['author', 3]
]
from xml.etree import ElementTree as etree
root = xml_arr.pop(0)
cur_level = root[1]
root = etree.Element(root[0])
cur_element = root
parents = [root]
for tag, level in xml_arr:
while level < cur_level:
cur_level -= 1
parents.pop()
cur_element = parents[-1]
if level == cur_level:
parents[-2].append(etree.Element(tag))
if level > cur_level:
cur_level = level
new_elem = etree.Element(tag)
cur_element.append(new_elem)
parents.append(new_elem)
cur_element = new_elem
print etree.tostring(root)
</code></pre>
<p>这张照片:</p>
<pre><code><root><dir><book1><chapter1><page1 /><page2 /></chapter1></book1><book2 /><book3 /><author /></dir></root>
</code></pre>
<p>或者在印刷精美时:</p>
<pre><code><root>
<dir>
<book1>
<chapter1>
<page1/>
<page2/>
</chapter1>
</book1>
<book2/>
<book3/>
<author/>
</dir>
</root>
</code></pre>