我正在使用Python和markup.py生成一个XML文件....它已经全部解决了但由于最近脚本的变化,我现在在节点中得到重复值,因为我放了检查到位。这是一个输出样本(它们是车辆记录):
<?xml version='1.0' encoding='UTF-8' ?>
<datafeed>
<vehicle>
<vin>2HNYD18816H532105</vin>
<features>
<feature>AM/FM Radio</feature>
<feature>Air Conditioning</feature>
<feature>Anti-Lock Brakes (ABS)</feature>
<feature>Alarm</feature>
<feature>CD Player</feature>
<feature>Air Bags</feature>
<feature>Air Bags</feature>
<feature>Anti-Lock Brakes (ABS)</feature>
<feature>Alarm</feature>
<feature>Air Bags</feature>
<feature>Alarm</feature>
<feature>Air Bags</feature>
</features>
</vehicle>
<vehicle>
<vin>2HKYF18746H537006</vin>
<features>
<feature>AM/FM Radio</feature>
<feature>Anti-Lock Brakes (ABS)</feature>
<feature>Air Bags</feature>
<feature>Air Bags</feature>
<feature>Anti-Lock Brakes (ABS)</feature>
<feature>Alarm</feature>
<feature>Air Bags</feature>
<feature>Alarm</feature>
</features>
</vehicle>
</datafeed>
这是一个包含100多条记录的较大XML文件的摘录。我该怎么做才能删除重复的节点?
答案 0 :(得分:1)
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()
在这种情况下,只需将功能设为set
,然后再将其传递给标记脚本:
// write the XML
markup.features.open()
markup.feature( set( features ) )
markup.features.close()
如果您有多个单独的列表,其中包含单个车辆的功能,请首先合并这些列表(或集合):
list1 = [...]
list2 = [...]
list3 = [...]
features = set( list1 + list2 + list3 )