擅长:python、mysql、java
<p>这有点棘手。首先,您需要获得<a href="https://stackoverflow.com/a/2170994/748858">this previous question</a>中描述的父元素。在</p>
<pre><code>parent_map = dict((c, p) for p in tree.getiterator() for c in p)
</code></pre>
<p>如果您可以让markdown使用<code>lxml</code>,那么这就简单了一点,我相信<code>lxml</code>元素已经知道它们的父元素了。在</p>
<p>现在,当您从迭代中获取元素时,还可以获得父元素:</p>
^{pr2}$
<p>注意,我已经将迭代器从树变成了一个列表,我们不想在遍历树时修改它。那可能是个麻烦。在</p>
<p>最后,您可以移动元素:</p>
<pre><code>def wrap_elem(parent, elem)
parent_index = list(parent).index(elem)
parent.remove(elem)
new_elem = ET.Element('div', attrib={'class': 'wrapper'})
parent.insert(parent_index, new_elem)
new_elem.append(elem)
</code></pre>
<p>*请注意,我还没有完全测试过这段代码。。。如果你发现什么虫子就告诉我。在</p>