[Python-bugs-list] [Bug #123695] xml.sax.handler.ContentHandler.characters() not SAX2
noreply@sourceforge.net
noreply@sourceforge.net
Tue, 28 Nov 2000 06:26:21 -0800
Bug #123695, was updated on 2000-Nov-28 06:26
Here is a current snapshot of the bug.
Project: Python
Category: None
Status: Open
Resolution: None
Bug Group: None
Priority: 5
Summary: xml.sax.handler.ContentHandler.characters() not SAX2
Details: It takes the wrong arguments and differs from the SAX specification.
I also submitted the following bug to the pyxml-sig bugtracker:
http://sourceforge.net/bugs/?func=detailbug&bug_id=123693&group_id=6473
SAX2 API documentation says: http://www.megginson.com/SAX/Java/javadoc/org/xml/sax/ContentHandler.html#characters(char[],
public void characters(char[] ch,int start, int length)
PyXML-0.6.2/doc/xml-howto.txt says:
def characters(self, ch)
in line 770
This corresponds to how the pyexpat implementation distributed with python 2.0 works, but is not following the SAX API as pyexpat in pyXML 0.6.2 does.
It looks like a bug in python 2.0 and at least a documentation bug for pyxml 0.6.2.
See the following example program, which should work.
import xml.sax
import xml.sax.handler
class processTask(xml.sax.handler.ContentHandler):
def startElement(self, name, attrs):
print "startElement: %s=" % (name),
print repr(attrs)
# SAX compliant
def characters(self, ch, start, length):
print "characters=%s" %(ch[start:start+length])
# works with python 2.0, but is not SAX compliant
# def characters(self, ch):
# print "characters=%s" %(ch)
#
def endElement(self, name):
print "endElement: %s=" % (name)
dh = processTask()
string="""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>"""
xml.sax.parseString(string,dh)
but instead is bombs:
startElement: parent= <xml.sax.xmlreader.AttributesImpl instance at 0x813b0e4>
startElement: child1= <xml.sax.xmlreader.AttributesImpl instance at 0x813b0e4>
Traceback (most recent call last):
File "xmltest2.py", line 27, in ?
xml.sax.parseString(string,dh)
File "/usr/src/packages/python/install//lib/python2.0/xml/sax/__init__.py", line 49, in parseString
parser.parse(inpsrc)
File "/usr/src/packages/python/install//lib/python2.0/xml/sax/expatreader.py", line 42, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/src/packages/python/install//lib/python2.0/xml/sax/xmlreader.py", line 120, in parse
self.feed(buffer)
File "/usr/src/packages/python/install//lib/python2.0/xml/sax/expatreader.py", line 81, in feed
self._parser.Parse(data, isFinal)
TypeError: not enough arguments; expected 4, got 2
Regards,
Bernhard Reiter <bernhard@intevation.de>
For detailed info, follow this link:
http://sourceforge.net/bugs/?func=detailbug&bug_id=123695&group_id=5470