Python ElementTree从另一个文件插入元素并保存

Python ElementTree从另一个文件插入元素并保存,python,xml,block,elementtree,addchild,Python,Xml,Block,Elementtree,Addchild,File1.xml <!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'> <qgis projectname="" version="2.6.1-Brighton"> <title></title> <mapcanvas> </mapcanvas> </qgis> 目标软

File1.xml

   <!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
    <qgis projectname="" version="2.6.1-Brighton">
        <title></title>
         <mapcanvas>

        </mapcanvas>
      </qgis>
目标软件需要以下格式的标签

<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
    <qgis projectname="" version="2.6.1-Brighton">
        <title></title>
<legend updateDrawingOrder="true">
    <legendlayer checked="Qt::Checked" name="Grid1.shp" open="true" showFeatureCount="0">
        <filegroup hidden="false" open="true">
            <legendlayerfile isInOverview="0" layerid="Grid1_shp20150117231830763" visible="1"/>
        </filegroup>
    </legendlayer>
    <legendlayer checked="Qt::Checked" name="world_countries.shp" open="true" showFeatureCount="0">
        <filegroup hidden="false" open="true">
            <legendlayerfile isInOverview="0" layerid="world_countries_shp20150117231830790" visible="1"/>
        </filegroup>
    </legendlayer>
</legend>

         <mapcanvas>

        </mapcanvas>
      </qgis>

无论您如何构建和/或修改元素树,都可以使用其写入方法将其保存到磁盘:


给出简短的示例输入和所需的输出。我已编辑以提供示例。对于给定的示例,正在更改为@ddurgaprasad,这是完全等效的XML,完全正确。我认为您无法停止这种XML规范化,也不知道您希望停止这种规范化的任何原因。
from xml.etree import ElementTree as et

tree1 = xml.etree.ElementTree.parse('File1.xml')
root1 = tree1.getroot()

tree2 = xml.etree.ElementTree.parse('File2.xml')
root2 = tree2.getroot()

root2.insert(0,root1)
print et.tostring(root2)
<!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
    <qgis projectname="" version="2.6.1-Brighton">
        <title></title>
<legend updateDrawingOrder="true">
    <legendlayer checked="Qt::Checked" name="Grid1.shp" open="true" showFeatureCount="0">
        <filegroup hidden="false" open="true">
            <legendlayerfile isInOverview="0" layerid="Grid1_shp20150117231830763" visible="1"/>
        </filegroup>
    </legendlayer>
    <legendlayer checked="Qt::Checked" name="world_countries.shp" open="true" showFeatureCount="0">
        <filegroup hidden="false" open="true">
            <legendlayerfile isInOverview="0" layerid="world_countries_shp20150117231830790" visible="1"/>
        </filegroup>
    </legendlayer>
</legend>

         <mapcanvas>

        </mapcanvas>
      </qgis>
tree2.write('File2.xml')