【问题标题】:ElementTree insert element from another file and saveElementTree 从另一个文件插入元素并保存
【发布时间】:2015-03-16 03:41:46
【问题描述】:

文件1.xml

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

        </mapcanvas>
      </qgis>

文件2.xml

<?xml version="1.0" ?>
<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>

我需要将 File1.XML 的一部分转换为 File2.XML...下面的脚本打印所需但仅用于元素。如何将这个更新保存在 File2.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>

【问题讨论】:

  • 给出简短的示例输入和所需的输出。
  • 我已编辑以提供示例

标签: python xml block elementtree addchild


【解决方案1】:

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

tree2.write('File2.xml')

【讨论】:

  • 对于给定的示例, 正在更改为
  • @ddurgaprasad,这是完全等价的 XML 并且完全正确。我认为您无法阻止此类 XML 规范化(我也不知道您有任何想要的理由)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2020-01-03
  • 2013-12-27
相关资源
最近更新 更多