如何将数据附加到已解析的 XML 对象 - Python

How to append data to a parsed XML object - Python

我正在尝试使用 python 中的 lxml objectify 解析的 xml 文档并向其添加子元素。

问题是我不知道该怎么做。我发现的唯一真正的选择是使用 objectify.Elementobjectify.SubElement 完全重建数据,但这...没有任何意义。

以 JSON 为例,我可以将数据作为对象导入并导航到任何部分,并超级轻松地读取、添加和编辑数据。

如何使用 objectify 解析 xml 文档以便我可以向其中添加子元素数据?

data.xml

<?xml version='1.0' encoding='UTF-8'?>
<data>
  <items>
    <item> text_1 </item>
    <item> text_2 </item>
  </items>
</data>

我确定网上有关于如何执行此操作的答案,但我的搜索术语要么不好要么我很笨,但我找不到这个问题的解决方案。如果这是一个重复的问题,我很抱歉。

我想解释这个问题相当困难,但问题本质上可以通过对如何应用 .Element.SubElement 的歧义来定义。

This reference 包含可操作且可复制的方式,可以通过这些方式将 appendadd 数据写入已解析的 XML 文件。

解决关键问题:

如何在不重建整个树的情况下引用嵌套标签中的内容?

作者使用查找功能,调用方式为root.findall(./tag)

这允许人们找到他们想要的 nested tag 而无需重建树。


这是他们使用的示例之一:

cost = ["00","00","00")
traveltime = ["3hrs", "8hrs", "15hrs"]
i = 0

for elm in root.findall("./country"):
    ET.SubElement(elm, "Holiday", attrib={"fight_cost": cost[i],
                                          "trip_duration": traveltime[i]})
    i += 1

这个例子也回答了 How do you dynamically add data to XML?

的问题

他们通过在循环外使用列表并使用 i

遍历它来实现这一点

本质上,这个例子有助于解释如何在不重新制作整个树的情况下引用嵌套内容,以及如何动态地将数据添加到 xml 树。