Sunday 15 March 2015

XML Parsing in Python-- avoid multiple tag values in sub root -



XML Parsing in Python-- avoid multiple tag values in sub root -

actuvally having below xml file:

<?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <c:retrivebyvehiclelinemodelyearresponse xmlns:a="urn:ford/vehicleorder/legacyfeaturemapping/v2.0" xmlns:b="urn:ford/vehicleorder/singleorderedit/v1.0" xmlns:c="urn:ford/interface/vehicleorder/legacyfeaturemapping/v2"> <c:portinstalledoptionfeature> <a:vehiclelineid>13001</a:vehiclelineid> <a:modelyear>2014</a:modelyear> <a:legacycolumn>12</a:legacycolumn> <a:legacyvalue>178 </a:legacyvalue> <a:salescode>w78</a:salescode> <a:mappingid>41859</a:mappingid> <a:mappingseq>0</a:mappingseq> <a:mappingdirection>b</a:mappingdirection> <a:targetfeature> <a:targetcatgegory> <a:id>181</a:id> <a:name>light truck wheelbases </a:name> <a:type>p</a:type> <a:familycode>aa5</a:familycode> </a:targetcatgegory> <a:orderfeatureid>15615</a:orderfeatureid> <a:werscode>aa5k8</a:werscode> <a:orderfeaturename>178 /4521mm wheelbase </a:orderfeaturename> <a:pio>false</a:pio> <a:summaryfeature>false</a:summaryfeature> </a:targetfeature> <a:targetfeature> <a:targetcatgegory> <a:id>181</a:id> <a:name>light truck wheelbases </a:name> <a:type>p</a:type> <a:familycode>aa5</a:familycode> </a:targetcatgegory> <a:orderfeatureid>15615</a:orderfeatureid> <a:werscode>aa5k8_second time</a:werscode> <a:orderfeaturename>178 /4521mm wheelbase </a:orderfeaturename> <a:pio>false</a:pio> <a:summaryfeature>false</a:summaryfeature> </a:targetfeature> </c:portinstalledoptionfeature> <c:portinstalledoptionfeature> <a:vehiclelineid>13001</a:vehiclelineid> <a:modelyear>2014</a:modelyear> <a:legacycolumn>12</a:legacycolumn> <a:legacyvalue>190 </a:legacyvalue> <a:salescode>w90</a:salescode> <a:mappingid>41860</a:mappingid> <a:mappingseq>0</a:mappingseq> <a:mappingdirection>b</a:mappingdirection> <a:targetfeature> <a:targetcatgegory> <a:id>181</a:id> <a:name>light truck wheelbases </a:name> <a:type>p</a:type> <a:familycode>aa5</a:familycode> </a:targetcatgegory> <a:orderfeatureid>15616</a:orderfeatureid> <a:werscode>aa5ma</a:werscode> <a:orderfeaturename>190 /4826mm wheelbase </a:orderfeaturename> <a:pio>false</a:pio> <a:summaryfeature>false</a:summaryfeature> </a:targetfeature> </c:portinstalledoptionfeature> </c:retrivebyvehiclelinemodelyearresponse> </soapenv:body>

my expected output is:

werscode aa5k8 aa5ma

for using below code:

import glob import xml.etree.elementtree et fatfile = open('#var_soe_vlis_response_output\\sales_to_wers_code2.txt', 'a') try: tree = et.parse('#var_eng_response_files\\soapresponse1.xml') fatfile.write('1111') werscodelist = tree.findall('.//{urn:ford/vehicleorder/legacyfeaturemapping/v2.0}portinstalledoptionfeature') fatfile.write('\n2222') # x = len(werscodelist) # fatfile.write(x) fatfile.write('\n333') werscode in werscodelist : fatfile.write('\n444') werscode = werscode.find('.//{urn:ford/vehicleorder/legacyfeaturemapping/v2.0}werscode') fatfile.write('\n') fatfile.write(werscode.text) except : fatfile.write(' \nsorry') fatfile.write(' \nsuccess')

" not able "portinstalledoptionfeature" kid values.. findall methos returns empty list...

please help me on sir.....

>>> xml.etree import elementtree >>> tree = elementtree.fromstring(xmltext) >>> country in tree.findall('./country'): print(country.attrib['name']) print(country.find('./rank').text) print(country.find('./year').text) print(country.find('./gdppc').text) principality of liechtenstein 1 2008 141100 singapore 4 2011 59900 panama 68 2011 13600 >>> # or list of dictionaries >>> [{'name': country.attrib['name'], 'rank': country.find('./rank').text, 'year': country.find('./year').text, 'gdppc': country.find('./gdppc').text} country in tree.findall('./country')] [{'gdppc': '141100', 'name': 'liechtenstein', 'rank': '1', 'year': '2008'}, {'gdppc': '59900', 'name': 'singapore', 'rank': '4', 'year': '2011'}, {'gdppc': '13600', 'name': 'panama', 'rank': '68', 'year': '2011'}]

python

No comments:

Post a Comment