Xml-списки сравниваются с Python
Я проанализировал XML-файл, выглядящий следующим образом:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE raml SYSTEM 'raml20.dtd'> <raml version="2.0" xmlns="raml20.xsd"> <cmData type="actual"> <managedObject class="LN" distName="PTR" id="2425"> <p name="aak">220</p> <p name="orp">05</p> <p name="name">Portro</p> <p name="optres">false</p> <p name="optblu">false</p> <p name="aoptdet">false</p> <p name="advcell">false</p> <list name="sibList"> <item> <p name="sibcity">177</p> <p name="sibrep">2</p> </item> <item> <p name="sibcity">177</p> <p name="sibrep">1</p> </item> </list> </managedObject> <managedObject class="LN" distName="KRNS" id="93886"> <p name="aak">150</p> <p name="orp">05</p> <p name="name">Portro</p> <p name="optres">false</p> <p name="optblu">tru</p> <p name="aoptdet">false</p> <p name="advcell">true</p> <list name="sibList"> <item> <p name="sibcity">177</p> <p name="sibrep">1</p> </item> <item> <p name="sibcity">180</p> <p name="sibrep">2</p> </item> </list> </menagedObject> .... <menagedObject> ... </menagedObject> ... </cmData> </raml>
Мне нужно пройти через весь menagedObject и сравнить все параметры(имя p). Я написал код для сравнения, но я не знаю, как пройти через список и сравнить параметры, если они имеют одинаковое значение, ничего не делать, если они разные, выдавать выходные данные разных параметров и значений. Я написал эту функцию, где клавиша "P имя" и значением является значение "P имя":
Что я уже пробовал:
temp = [] for i in temp_ln: for j, k in zip(i.getchildren(), i): temp.append([i.get('distName'), j.get('name'), j.text]) tempdict = {} for i in temp_ln: td = {} for j in i.getchildren(): td.update({j.get('name'): j.text}) tempdict.update({i.get('distName'): td}) main_dif = {} for key, value in tempdict.iteritems(): dif_k = {} for k, v in value.iteritems(): try: a = ref[k] except: a = None if v != a: if k == 'name': pass else: dif_k.update({k:(v, a)}) main_dif.update({key:dif_k})