Python 删除XML中的重复节点

Python 删除XML中的重复节点,python,xml,Python,Xml,我正在使用Python和markup.py生成一个XML文件……这一切都正常,但由于脚本中最近的更改,我现在在节点中得到了重复的值,这是因为我进行了检查。以下是输出示例(它们是车辆记录): 2HNYD18816H532105 调幅/调频收音机 空调 防抱死制动系统(ABS) 报警 CD播放机 安全气囊 安全气囊 防抱死制动系统(ABS) 报警 安全气囊 报警 安全气囊 2HKYF18746H537006 调幅/调频收音机 防抱死制动系统(ABS) 安全气囊 安全气囊 防抱死制动系统(ABS)

我正在使用Python和markup.py生成一个XML文件……这一切都正常,但由于脚本中最近的更改,我现在在节点中得到了重复的值,这是因为我进行了检查。以下是输出示例(它们是车辆记录):


2HNYD18816H532105
调幅/调频收音机
空调
防抱死制动系统(ABS)
报警
CD播放机
安全气囊
安全气囊
防抱死制动系统(ABS)
报警
安全气囊
报警
安全气囊
2HKYF18746H537006
调幅/调频收音机
防抱死制动系统(ABS)
安全气囊
安全气囊
防抱死制动系统(ABS)
报警
安全气囊
报警
这是一个较大的XML文件的小摘录,该文件有100多条记录。如何删除重复节点?

XML中没有真正的“重复”。每个节点的定义都不同。但我理解你,你想在你的解释中消除所有重复的特征

您可以通过简单地解析该树、将特性(节点的值)放入一个集合(以消除重复项)并写出一个新的XML文档来实现这一点

假设您是使用Python生成文件,那么您应该修改创建例程,使其不会首先生成重复的值。您可能想告诉我们
markup.py
是什么或做什么

编辑 我只是快速查看了一下标记脚本,因此您的脚本中可能会出现如下内容:

// well, this might come from somewhere else, but I guess you have such a list somewhere
features = [ 'AM/FM Radio', 'Air Conditioning', 'Anti-Lock Brakes (ABS)', 'Alarm', 'CD Player', 'Air Bags', 'Air Bags', 'Anti-Lock Brakes (ABS)', 'Alarm', 'Air Bags', 'Alarm', 'Air Bags' ]

// write the XML
markup.features.open()
markup.feature( features )
markup.features.close()
在这种情况下,只需在将特性传递到标记脚本之前将其设置为

// write the XML
markup.features.open()
markup.feature( set( features ) )
markup.features.close()
如果您有多个单独的列表,其中包含单个车辆的功能,请首先合并这些列表(或集合):

XML中没有真正的“重复”。每个节点的定义都不同。但我理解你,你想在你的解释中消除所有重复的特征

您可以通过简单地解析该树、将特性(节点的值)放入一个集合(以消除重复项)并写出一个新的XML文档来实现这一点

假设您是使用Python生成文件,那么您应该修改创建例程,使其不会首先生成重复的值。您可能想告诉我们
markup.py
是什么或做什么

编辑 我只是快速查看了一下标记脚本,因此您的脚本中可能会出现如下内容:

// well, this might come from somewhere else, but I guess you have such a list somewhere
features = [ 'AM/FM Radio', 'Air Conditioning', 'Anti-Lock Brakes (ABS)', 'Alarm', 'CD Player', 'Air Bags', 'Air Bags', 'Anti-Lock Brakes (ABS)', 'Alarm', 'Air Bags', 'Alarm', 'Air Bags' ]

// write the XML
markup.features.open()
markup.feature( features )
markup.features.close()
在这种情况下,只需在将特性传递到标记脚本之前将其设置为

// write the XML
markup.features.open()
markup.feature( set( features ) )
markup.features.close()
如果您有多个单独的列表,其中包含单个车辆的功能,请首先合并这些列表(或集合):


如何删除重复的节点?:要想在一开始就不制作它们,您必须修复脚本,这样您就可以在这里发布脚本而不是xml文件。脚本没有bug…只是features表有三列,一个用于内部使用,另两个用于联合到其他服务…重复项来自其他两列中的值,因为功能可能具有不同的内部名称,但在其他两列中具有相同的名称。不知道我的解释是否有帮助如何删除重复节点要想在一开始就不制作它们,您必须修复脚本,这样您就可以在这里发布脚本而不是xml文件。脚本没有bug…只是features表有三列,一个用于内部使用,另两个用于联合到其他服务…重复项来自其他两列中的值,因为功能可能具有不同的内部名称,但在其他两列中具有相同的名称。不知道我的解释是否有用…我想去掉所有重复的功能。我想我会照你的建议去做。py是一个HTML和XML生成器…它使这样的过程变得简单()是的…我想去掉所有重复的特性。我想我会照你的建议去做。py是一个HTML和XML生成器…它使这些过程变得简单()