[mod_python] Minidom parse error

Dan R. Olsen III python at dan-olsen.net
Wed Dec 22 15:15:53 EST 2004


I am trying to parse a file that I am getting from a url. However, I 
keep getting an error saying that a module does not have an attribute 
parse. Here is the code followed by the error:

----- BEGIN CODE -----

import xml.dom.minidom
#from xml.dom import minidom
from mod_python import apache
from dbxml import *
import urllib


### GET ALL THE URLS FROM THE OPML FILE
#######################################
def get_urls(req, url):
    #req.write(url + "\n")
    xmlfile = 
urllib.urlopen('http://www.windley.com/gems/mySubscriptions.opml')
    #req.write(xmlfile + "Great!!")
    filedoc = xml.dom.minidom.parse(xmlfile)
    req.write("HOW ABOUT HERE\n")
    feeds = []
    text = filedoc.getElementsByTagName("outline")
    for nodes in text:
        for (name, value) in nodes.attributes.items():
            if name == 'xmlUrl':
                feeds.append(value)
    return feeds

### SPLIT THE ARGUMENTS PASSED TO THE URL
#########################################
def split_args(args):
    rose_args = {}
    if args == None:
        return rose_args

    arglist = args.split('&')

    for arg in arglist:
        tmp = arg.split('=')
        if len(tmp) == 1:
            rose_args[tmp[0]] = None
        else:
            rose_args[tmp[0].upper()] = tmp[1]
    return rose_args

### SEND ERROR IF SOMETHING GOES WRONG
######################################
def send_html_error(req, s, status):
    req.content_type = 'text/html'
    req.send_http_header()
    req.write('<p>' + s + '</p>')
    raise apache.SERVER_RETURN, status

### MAIN HANDLER METHOD WHERE ARE THE MAIN CALLS ARE MADE
#########################################################
def handler(req):
    req.send_http_header()

    request = req.args
    rose_args = split_args(req.args)
    if len(rose_args) == 0:
        send_html_error(req, 'No parameters found', apache.HTTP_BAD_REQUEST)
    if len(rose_args) != 2:
        send_html_error(req, '<strong><font color=\"RED\">You must have 
two parameters, one for \nyour OPML file and one for the 
FLAVOR</font></strong>', apache.HTTP_PRECONDITION_FAILED)

    url = rose_args.get('URL', None)
    flavor = rose_args.get('FLAVOR', None)
    if url == None:
        send_html_error(req, '<strong><font color=\"RED\">No URL 
parameter found</font></strong>', apache.HTTP_PRECONDITION_FAILED)
    else:
        req.write("OPML: " + url + "\n")

    if flavor == None:
        send_html_error(req, '<strong><font color=\"RED\">No FLAVOR 
parameter found</font></strong>', apache.HTTP_PRECONDITION_FAILED)
    else:
        flavor = flavor.upper()
        if(flavor != 'RSS' and flavor != 'ATOM'):
            req.write("FLAVOR: " + flavor + "\n")
            send_html_error(req, '<strong><font color=\"RED\">The FLAVOR 
you entered is not a valid flavor</font></strong>', 
apache.HTTP_PRECONDITION_FAILED)
        else:
            req.write("FLAVOR: " + flavor + "\n")

    rose_urls = get_urls(req, url)   
    req.write(rose_urls[0])
    mgr = XmlManager()
    container = mgr.openContainer("/web/htdocs/dev/danolsencreatedme.dbxml")

    return apache.OK

----- END CODE -----

----- BEGIN OUTPUT ------

OPML: http://www.windley.com/gems/mySubscriptions.opml
FLAVOR: RSS

Mod_python error: "PythonHandler rose"

Traceback (most recent call last):

  File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line 193, in Dispatch
    result = object(req)

  File "/web/htdocs/dev/rose.py", line 78, in handler
    rose_urls = get_urls(req, url)

  File "/web/htdocs/dev/rose.py", line 14, in get_urls
    filedoc = xml.dom.minidom.parse(xmlfile)

  File "/usr/lib/python2.3/site-packages/_xmlplus/dom/minidom.py", line 1908, in parse
    return expatbuilder.parse(file)

AttributeError: 'module' object has no attribute 'parse'

----- END OUTPUT -----

If anyone can clue me in on why this is happening that would be great!

Dan Olsen


More information about the Mod_python mailing list