0

我正在尝试在另一个子元素中创建子元素。xml应该像

<Mainelement>
    <subelement>
        <sub-subelement>
        </sub-subelement>
    <subelement>
 <Mainelement>

我尝试了以下代码

MainElement=ET.Element("MainElement")
subelement=ET.SubElement(MainElement,"subelement")
sub_subelement=ET.SubElement(subelement,"sub-subelement")

发生的情况是它创建了一个 sub_subelement 的起始标签,但没有结束标签,如下所示

    <Mainelement>
    <subelement>
        <sub-subelement>        
    <subelement>
 <Mainelement>

如何将结束标签添加到子子元素。任何帮助表示赞赏。提前致谢

4

1 回答 1

0

当您在您的帖子中包含代码结果时,您可能错过了所有/字符(在结束标签中)。

我尝试了您的代码,它给出了(带有缩进):

<MainElement>
  <subelement>
    <sub-subelement />
  </subelement>
</MainElement>

请注意,<sub-subelement />实际上与 具有相同的含义 <sub-subelement></sub-subelement>

但是,如果您添加sub_subelement.text = 'Xyz'到代码中,结果将是:

<MainElement>
  <subelement>
    <sub-subelement>Xyz</sub-subelement>
  </subelement>
</MainElement>

所以很明显,当一个 XML 元素被转换为一个字符串时,只有当这个元素不为空时,才会呈现单独的开始标签和结束标签。

编辑

即使相关元素为空,您也可以使用单独的开始/结束标签打印 XML 树。为此,请通过short_empty_elements=False

et.tostring(MainElement, encoding='unicode', short_empty_elements=False)

然后结果如你所愿。

于 2020-01-26T13:58:39.467 回答