【问题标题】:How to append data to a parsed XML object - Python如何将数据附加到已解析的 XML 对象 - Python
【发布时间】:2021-05-31 07:57:32
【问题描述】:

我正在尝试在 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>

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

【问题讨论】:

  • 不清楚。你到底试过什么?什么是没有意义的?
  • 将其提炼成一行:如何解析 xml 文档并向其中 添加 内容。很抱歉这很简单,但我找不到答案。
  • 具体来说,我可以使用 function 实际添加的内容。我的理解是,objectify.Elementobjectify.SubElement 这样的函数只能用于construct xml 数据集,而不能append 用于现有数据集。就像,我真的不明白如何将数据附加到解析的数据集。这有意义吗?

标签: python xml lxml lxml.objectify


【解决方案1】:

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

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

解决以下关键问题:

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

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

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


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

cost = ["$2000","$3000","$4000")
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

这个例子也回答了如何将数据动态添加到XML?

的问题

他们通过使用循环外的列表并使用i 迭代它来实现这一点

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多