N
noahlt
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
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