xml parsing python

 

ukazka xml

<zamestnanci>
    <row>
        <id>74</id>
        <cislo>100061</cislo>
        <jmeno>Petr</jmeno>
        <prijmeni>Grussmann</prijmeni>
        <stredisko>00100124</stredisko>
        <role>HIP</role>
        <loginid>petrg</loginid>
        <mzda>1000</mzda>
    </row>
    <row>
        <id>45</id>
        <cislo>100062</cislo>
        <loginid>Jiri</loginid>
        <jmeno>Jiri</jmeno>
        <prijmeni>Prvni</prijmeni>
        <stredisko>skupina</stredisko>
        <role>HIP</role>
        <mzda>2000</mzda>
    </row>
</zamestnanci>
__author__ = 'ucitel'
#from __future__ import unicode_literals
import xml.sax
pole_zamestanci=[]

class XMLContextHandler(xml.sax.ContentHandler):
    def __init__(self):
        xml.sax.ContentHandler.__init__(self)
        self.element = None
        self.user_name = None
        self.user_group = None
        self.mzda = None

    def startElement(self, name, attrs):
        self.element = name

    def endElement(self, name):
        self.element = None
        if name =='row':
            self.pole_array=[self.user_name,self.user_group,self.mzda]
            pole_zamestanci.append(self.pole_array)

    def characters(self, content):
        if self.element == 'loginid':
            self.user_name = content
            #self.veta_array[self.user_name,]
        if self.element == 'stredisko':
            self.user_group = content
        if self.element == 'mzda':
            self.mzda = content


f = open("zamestanci.xml", "r")
xml.sax.parse(f, XMLContextHandler())
f.close()
suma = 0
print pole_zamestanci
for i in range(len(pole_zamestanci)):
    #print pole_zamestanci[i][2]
    suma = suma + float(pole_zamestanci[i][2])
print 'Prumerna mzda :' + str(suma / len(pole_zamestanci))