How to convert structured python list to xml -


i know how can convert in easy way structured python list xml , store xml file? skip lines 'none' inside:

    [ ['none', none, none, none, none, none, 'false', 'none', 'none'],     ...       ['none', none, none, none, none, none, 'false', 'none', 'none']     ] 

this how structured list looks like:

[ [ 'this first case',     'case001',     'linux',     '2017-08-18 06:45:58',     '2017-08-18 06:46:47',     '55',     'pass',     [],     [ ['none', none, none, none, none, none, 'false', 'none', 'none'],     ...       ['none', none, none, none, none, none, 'false', 'none', 'none']     ]   ],   [ 'this second case',     'case002',     'linux',     '2017-08-18 07:45:58',     '2017-08-18 07:46:47',     '65',     'pass',     [],     [ ['none', none, none, none, none, none, 'false', 'none', 'none'],     ...       ['none', none, none, none, none, none, 'false', 'none', 'none']     ]   ],   ... ] 

for xml don't need fields, don't mind if easier parse fields! imported xml file should this:

<case>     <header>this first case</header>     <name>case001</name>     <age>linux</age>     <failedsince>0</failedsince>     <skipped>false</skipped>     <duration>55</duration>     <status>passed</status> </case> ... 

with more reading figured solution works needs.

the main scope convert above structured list xml specific fields , values.

the below code solution:

import pickle import pprint  import xml.etree.celementtree et  suite = et.element('suite')  testsuiteresults = []  # reading file stored pickle.dump structured python list try:     fileread = open('results.log','rb')     testsuiteresults = pickle.load(fileread)     fileread.close() except ioerror error_msg:     print 'i/o error(%s): %s'%(error_msg.errno, error_msg.strerror)     sys.exit(1)  # printout check list pp = pprint.prettyprinter(indent=0) pp.pprint(testsuiteresults)  s in testsuiteresults:     # here structure xml should have, see question text     case = et.subelement(suite, 'case')     age = et.subelement(case, 'age')     classname = et.subelement(case, 'classname')     durationcase = et.subelement(case, 'durationcase')     failedsince = et.subelement(case, 'failedsince')     name = et.subelement(case, 'name')     skipped = et.subelement(case, 'skipped')     status = et.subelement(case, 'status')     stderr = et.subelement(case, 'stderr')     stdout = et.subelement(case, 'stdout')      # put specific list values specific xml fields     # list index 3 & 4 & 7 not used     # rest list index 8...len(s) - 3 skipped     # last 2 used again s[len(s) - 2] & s[len(s) - 1]     age.text = str(s[2])     classname.text = str(s[0])     durationcase.text = str(s[5])     failedsince.text = '0'     name.text = str(s[1])     skipped.text = 'false'     status.text = str(s[6])     # s[y] has no value stderr field set '-'     if str(s[len(s) - 1]):         stderr.text = str(s[len(s) - 1])     else:         stderr.text = '-'     # s[x] stored in field stdout     stdout.text = str(s[len(s) - 2])  tree = et.elementtree(suite) tree.write('list2etree.xml') 

example of testsuiteresults:

[ 0 [   0  'this first case',   1  'case001',   2  'linux',   3  '2017-08-18 06:45:58',   4  '2017-08-18 06:46:47',   5  '55',   6  'pass',      [],      [ ['none', none, none, none, none, none, 'false', 'none', 'none'],      ...        ['none', none, none, none, none, none, 'false', 'none', 'none']      ],   x  'path',   y  'notes'   ], 1 [   0  '...'   1 .... 

the list2etree.xml example:

<suite>    <case>       <age>linux</age>       <classname>this first case</classname>       <durationcase>55</durationcase>       <failedsince>0</failedsince>       <name>case001</name>       <skipped>false</skipped>       <status>pass</status>       <stderr>notes</stderr>       <stdout>path</stdout>    </case>    ... </suite> 

Comments

Popular posts from this blog

What is happening when Matlab is starting a "parallel pool"? -

angular - DownloadURL return null in below code -

php - Cannot override Laravel Spark authentication with own implementation -