[XML-SIG] parsing XML with minidom

Peter A. Bigot bigotp at acm.org
Thu Feb 4 13:43:16 CET 2010


The variable tag is a list of strings.  The method getElementsByTagName 
takes a single string as its first parameter.  Since a list cannot 
appear as a tag name, the second call to getElementsByTagName returns an 
empty list.

body = dom.getElementsByTagName('body')[0]
for route in body.getElementsByTagName('route'):
     print route.getAttribute('tag')

Peter

On 2/3/2010 9:04 PM, kimmyaf wrote:
> Hello, I am not real sure if my question belongs here or not, but this is
> best place I could find.
>
> I am a python beginner and trying to teach myself how to parse some XML with
> minidom.
>
> This is the code excerpt I am struggling with....
>
> ********************************************************
>     dom = minidom.parseString(xml_response)
>      handler.close()
>
>      route_list = []
>      tag = ['route']
>
>      tmp_route=[]
>      for route in dom.getElementsByTagName('body'):
>          print 'in'
>          tmp_route[route] =
> dom.getElementsByTagName(tag)[0].getAttribute('tag')
>          route_list.append(tmp_route)
>
> *******************************************************************
> Here is the XML I am getting back when I call...
>
> '<?xml version="1.0" encoding="utf-8" ?>  \r\n<body copyright="All data
> copyright MBTA 2010.">\r\n<route tag="39" title="39"/>\r\n<route tag="111"
> title="111"/>\r\n<route tag="114" title="114"/>\r\n<route tag="116"
> title="116"/>\r\n<route tag="117" title="117"/>\r\n</body>\r\n'
>
>      See this formatted better by pasting this URL =>
>
> http://webservices.nextbus.com/service/publicXMLFeed?command=routeList&a=mbta
>
>
> I am taking the following error:
>
>    File "C:/Users/Kim/Grad School/Python/bus python.py", line 54, in<module>
>      get_available_routes()
>    File "C:/Users/Kim/Grad School/Python/bus python.py", line 43, in
> get_available_routes
>      tmp_route[route] = dom.getElementsByTagName(tag)[0].getAttribute('tag')
> IndexError: list index out of range
>
>
>
> I'm sure there is something obvious that I am doing wrong. All I want to do
> is grab all of the<route tag>  values and put them into a list.  Kind of new
> to parsing XML! I'm working off an example but the XML in the example code
> is a lot more in depth so can't really relate it to mine. I also would like
> any reference anyone has about how to parse with minidom!!
>
> Help! Thank you! %-|
>    




More information about the XML-SIG mailing list