如果我的标题听起来令人困惑,我很抱歉。 我正在编写一个比较 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/