2014-09-07 129 views
1

У меня есть файл XML выглядит как этотПИТОН: Как добавить корневой узел в XML

<A> 
    <B> 
    <C> 
     .... 
    </C> 
    </B> 
</A> 

Я хочу, чтобы добавить корень поверх элемента «A». Я узнал, как добавить элементы в root. Но как изменить существующий корень и добавить поверх него с помощью python.

После добавления корня к XML он должен выглядеть следующим образом

<ROOT> 
    <A> 
    <B> 
     <C> 
     .... 
     </C> 
    </B> 
    </A> 
</ROOT> 

ответ

4
import lxml.etree as ET 
tree = ET.parse('data') 
root = tree.getroot() 
newroot = ET.Element("root") 
newroot.insert(0, root) 
print(ET.tostring(newroot, pretty_print=True)) 

дает

<root> 
    <A> 
    <B> 
    <C> 
     .... 
    </C> 
    </B> 
</A> 
</root> 

Но на самом деле, если вам не нужно, чтобы добавить что-то более сложное, простая строка может быть достаточно форматирования:

with open('data', 'rb') as f, open('newdata', 'wb') as g: 
    g.write('<ROOT>{}</ROOT>'.format(f.read())) 
+1

Форматирование строки не будет работать, если XML имеет объявление xml или пространства имен – Mark

Смежные вопросы