Python ElementTree从另一个文件插入元素并保存
File1.xmlPython 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> 目标软
<!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')