Hi,

Please review the following code and help me.

Here I'm trying to :
1. Read each XML file in a folder.
2. Parse file.
3. Store some of the tags values as key-value pair in a map
4. Similarly maintain another collection that'll store one list per file.

-- 
With Regards
Amitesh K.
9850638640
import sys
import xml.parsers.expat
import dircache

rec = {}
rec2 = {}
oli = {}
ordtagname = '*'
recList = {}
cnt = 0
cnt2 = 0

ordtags = set()
shptags = set()
omptags = set()

ordtags.add('orrfnbr')
ordtags.add('afidlog')
ordtags.add('orprtot')
ordtags.add('ortxtot')
ordtags.add('orshtot')
ordtags.add('orcpcur')
ordtags.add('orpstmp')
ordtags.add('orustmp')
ordtags.add('orappstat')
ordtags.add('orappdt')

shptags.add('strfnbr')
shptags.add('stprnbr')
shptags.add('stvdnbr')
shptags.add('stprice')
shptags.add('stquant')
shptags.add('stpstmp')
shptags.add('stustmp')
shptags.add('starwbll')
shptags.add('stdspchstat')
shptags.add('stlogistics')
shptags.add('stentrydt')
shptags.add('stcpprice')
shptags.add('stlstprice')

omptags.add('ompaymthd')
omptags.add('ommaxaamt')


def start_element(name, attrs):
        global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2
        if name in ordtags or name in shptags or name in omptags:
                ordtagname = name
        sys.stdout.flush()

def end_element(name):
        global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2
        if name in ordtags or name in shptags or name in omptags:
                ordtagname = ''
        if name == 'shipto':
                cnt2 = cnt2+1   
        if name == 'order':
                cnt2 = 0
        sys.stdout.flush()
        
def char_data(data):
        global ordtagname, rec,recList,cnt,ordtags,rec2,cnt2
        if None != data: 
            if ordtagname in ordtags or ordtagname in shptags or ordtagname in 
omptags:
                        if ordtagname in shptags :
                                rec2[repr(ordtagname).strip('u\'')] = 
repr(data).strip('u\'')
                        else:
                            rec[repr(ordtagname).strip('u\'')] = 
repr(data).strip('u\'')
                        rec['OLI-'+str(cnt2)] = rec2
        sys.stdout.flush()

for f in iter(dircache.listdir('./xmls/')):
        print f
        g=open('./xmls/'+f, 'r')
        p = xml.parsers.expat.ParserCreate()
        p.StartElementHandler  = start_element
        p.CharacterDataHandler = char_data
        p.EndElementHandler    = end_element
        p.ParseFile(g) 
        recList['ORDER-'+str(cnt)] = rec
        print recList
        g.close()
        cnt = cnt+1
_______________________________________________
XML-SIG maillist  -  XML-SIG@python.org
http://mail.python.org/mailman/listinfo/xml-sig

Reply via email to