【问题标题】:with lxml Inserting a parsed xml file as an Element for subsequent output用 lxml 插入解析后的 xml 文件作为 Element 用于后续输出
【发布时间】:2020-03-08 13:26:13
【问题描述】:

我有一个使用 lxml 来创建一些 xml 的应用程序,目前一个部分是另一个 xml 文件的嵌入式包含

问题是当我保存文件时,我还需要将包含的 xml 保存在同一目录中。

我正在寻找的是,当我创建元素树并到达当前我为包含设置的部分时,实际上我解析了包含文件,使其成为元素树的一部分并将成为输出的一部分.

我正在创建一个 GDML 文件,因此我的应用程序具有(显然它会输出更详细的元素树)

gdml = ET.Element('gdml')
define = ET.SubElement(gdml, 'define')
structure = ET.SubElement(gdml, 'structure')
setup = ET.SubElement(gdml, 'setup', {'name': 'Default', 'version': '1.0'})
ET.SubElement(setup,'world', {'ref':self.Name})
solids = ET.SubElement(gdml, 'solids')

目前材料部分有

    ent  = ET.Entity("materials")
    materials = ET.SubElement(gdml, 'materials')
    materials.append(ent)

我输出文件的时候需要嵌入的文件materials.xml在同一目录下。

我想解析材料 xml 文件并添加到元素树
materials = ET.parse("./materials.xml")

如何将材料添加到 gdml ET.Element

【问题讨论】:

  • 如果我有一个最小的可重现示例,我不会问这个问题。
  • 我正在寻找有关如何处理该问题的建议。

标签: python-3.x lxml


【解决方案1】:

您可以像这样添加 material.xml 中的任何内容:

# Parse materials.xml and get the root element
materials = ET.parse("materials.xml").getroot()

# Append materials as a new child of the gdml root element
gdml.append(materials)

【讨论】:

  • 是的,parse() 返回一个 ElementTree 对象,但 append() 需要一个 Element
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多