我已经解析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>
</managedObject>
....
<managedObject>
...
</managedObject>
...
</cmData>
</raml>
我需要从第一managedObject经过的所有“managedObject”,并比较各参数(P名)从另一managedObjects参数(AAK,ORP等),并获得不同的参数和它们的值的输出,如果没有不同的参数值,什么也不做。 我写的代码比较讨论,但我不知道如何通过列表去(它命名为“sibList”)和比较的参数。 我写了这个功能,其中关键是“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})
elements_list = {}
if j.get('name') == 'sibList':
for item in j.getchildren():
for w in item.getchildren():
elements_list.update({ w.get('name'): w.text})
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})