Parsing xml file in python

Diez B. Roggisch deets at nospam.web.de
Tue Oct 30 14:32:22 EDT 2007


amjadcsu at gmail.com schrieb:
> I am a newbie in python
> I am trying to parse a xml file and write its content in a txt file.
> The txt contains null elements. Any reason what  iam doing wrong here
> 
> 
> Here is the code that i wrote
> 
> import sys,os
> import xml.sax
> import xml.sax.handler
> from xml.sax.handler import ContentHandler
> from xml.sax import make_parser
> 
> class gmondxmlparse (ContentHandler):
> 
>     def __init__(self,searchTerm):
>         self.searchTerm=searchTerm;
> 
>     def startElement(self,name,attrs):
> 
>         if name=="HOST":
>             self.hostname=attrs.get('NAME',"")
>             self.IP=attrs.get('IP',"")
>         elif name=="METRIC":
>             self.metricname=attrs.get('NAME', "")
>             self.metricvalue=attrs.get('VAL',"")
>             self.metrictype=attrs.get('TYPE',"")
>             self.metricunit=attrs.get('UNITS',"")
>         return
> 
>     def endElement(self,name):
>         if name=="HOST" and self.searchTerm==self.hostname:
>             try:
>                 fh=open('/root/yhpc-2.0/ganglia.txt' ,'w')
>             except:
>                 print "File /root/yhpc-2.0/ganglia.txt can not be
> open"
>                 sys.exit(1)
>             fh.write("This is a test for xml parsing with python with
> chris and amjad \n")
>             fh.write("the host name is", self.hostname, "\n")
>             fh.write("the ip address is", self.IP, "\n")
>             fh.close()
> 
> searchTerm="HOST"
> parser=make_parser()
> curHandler=gmondxmlparse(searchTerm)
> parser.setContentHandler(curHandler)
> parser.parse(open("/root/yhpc-2.0/gmond.xml"))
> 
> 
> Here is the sample of xml file
> 
> Here is the  xmk file called gmond.xml
> <HOST NAME="192.168.10.163" IP="192.168.10.163" REPORTED="1193689455"
> TN="0" TMAX="20" DMAX="0" LOCATION="unspecified"
> GMOND_STARTED="1193170061">
> <METRIC NAME="cpu_num" VAL="2" TYPE="uint16" UNITS="CPUs" TN="994"
> TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
> 

Without an actual error given, it's hard to know what your problem is.

One thing though is noticable: your XML below isn't valid - XML has only 
one root-element.

And just for the record: it appears that you work under linux using a 
root-account. Bad idea. Really.

http://linuxbraindump.org/2007/08/13/the-10-commandments-for-new-linux-users/

Diez



More information about the Python-list mailing list