python - 比较两个 XML 文件并更新其中一个文件中的元素

标签 python xml

如果我的标题听起来令人困惑,我很抱歉。 我正在编写一个比较 2 个 XML 文件的 Python 脚本。在这两个文件中,我们都有其 ID 与另一个文件中的 ID 相同的数据。

例如

源文件:

  <id>123456</id> 
    <data>blabla</data>
        ......some other data......
  <id>abcde</id>
    <data>gfkgjk</data>
        ......some more data..........

目标文件:

  <id>123456</id> 
    <data> </data>
        ......some other data......
  <id>ghijk</id>
    <data>gfkgjk</data>
        ......some more data..........

正如您在上面的示例中看到的,并非源文件中的所有 ID 也都在目标文件中。此外,虽然有2个数据组ID相同,但其中一个填写了“data”标签,另一个没有填写。

我的程序应该查看源文件,提取 id 和数据标签之间的文本。然后它查看目标文件,如果存在具有相同 ID 和空数据标签的数据(如上例所示),它会用源文件中的信息填充这些空标签。 (顺便说一句:除了ID和数据信息,这两个XML是完全不同的,所以我不能只保留源文件)。

是的,我能够提取 ID 和数据标签之间的信息。 现在我正在尝试编写一个函数来比较 id 并替换空数据信息(如果有的话)。 但是,我对 Python 和函数不是很熟悉,需要一些帮助。 这是我的函数的样子:

def replace_empty_data():
    for x in xmlData_id_source:
       if xmlData_id_source==xmlData_id_target:
          target = re.sub(xmlData_2,xmlData,target)
       return target
    file_target.close()

函数中可能缺少负载,但我不知道是什么。它不会给我任何错误,而且根本无法正常工作。除 x 之外的变量已在代码的前面部分定义,因此这不是问题。

xmlData_id_source 是来自源文件的 ID xmlData_id_target 是目标文件的 ID xmlData_2为目标文件中的数据信息 xmlData是来自源文件的数据信息

感谢到目前为止的输入,但我仍在为那些对编程一无所知的人寻找一种易于理解的方法....我使用 minidom 来解析文件,并且想在没有的情况下使用它导入和安装更多库。

最佳答案

您需要为此使用 XML 解析器。看看ElementTree .

不要在此处使用正则表达式或字符串替换

关于python - 比较两个 XML 文件并更新其中一个文件中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11471586/

相关文章:

python - 使用API​​View接收参数

python - 是否可以轻松地从 Pycharm 中提取 python 运行配置(带有附加路径)?

c# - 重命名 Xml 节点

xml - XmlDictionaryReader 真的可以处理二进制 XML 吗?如果不是,那是什么?

安卓 : take Data in ListView

python - 我如何在 Django 测试中(在自定义测试运行程序中)伪造某些南迁移?

python:通过从列表中排除特定值来创建随机值

python - Django 1.9.13 提示 SubfieldBase 已被弃用,但我没有使用它。如何解决?

xml - 强制执行注册表值引用的最低 DLL 版本

xml - 使用XSLT重命名XML节点的所有子节点