Function returns none

noahlt at gmail.com noahlt at gmail.com
Mon Oct 31 14:12:24 EST 2005


I'm trying to write a website updating script, but when I run the
script, my function to search the DOM tree returns None instead of what
it should.

I have this program:
--------
import sys
from xml.dom.minidom import parse


# search the tree for an element with a particular class

def findelement(current, classtofind, topnode = None):
    if topnode == None: topnode = current



    # if it's an xml element...
    if current.nodeType == 1:
        print current.nodeName, ':', current.getAttribute('class')
        if current.getAttribute('class') == classtofind:
            print 'Returning node:', current
            return current
        elif current.hasChildNodes():
            findelement(current.firstChild, classtofind, topnode)
        elif current.nextSibling:
            findelement(current.nextSibling, classtofind, topnode)

        elif (current.parentNode != topnode) \

                 and (current.parentNode.nextSibling != None):

            findelement(current.parentNode.nextSibling, classtofind,
topnode)
        else:

            print 'Returning None...'

            return None

    # others (text, comment, etc)

    else:

        if current.nextSibling:

            findelement(current.nextSibling, classtofind, topnode)

        elif (current.parentNode != topnode) \

                 and (current.parentNode.nextSibling != None):

            findelement(current.parentNode.nextSibling, classtofind,
topnode)
        else:

            print 'Returning None...'

            return None



# parse the document

blog = parse('/home/noah/dev/blog/template.html')



# find a post

postexample = findelement(blog.documentElement, 'post')



print 'Got node:       ', postexample

-----

My output is this:

-----
html :
head :
title :
body :
h1 :
ul :
li :
h2 :
ol :
li : post
Returning node: <DOM Element: li at -0x48599c74>
Got node:        None
-----

The function finds the right element fine, and says it will return <DOM
Element: li at -0x48599c74>, but the program gets None instead.  What's
happening here?  Any suggestions?




More information about the Python-list mailing list