how to use xml.sax
besty2000 at hotmail.com
besty2000 at hotmail.com
Mon Nov 20 11:56:07 EST 2000
I have upgraded to using Python2.0 from 1.5.2 and I am now having
difficulty parsing my XML files using the xml.sax module.
I have been refering to the XML HOWTo and the Python2.0 notes
but get the following error:-
File "C:\My Documents\Python\NCFM\CommandValidation.py", line 49, in
loadCommandDict
p.parse(self.commandFile)
File "c:\python20\lib\xml\sax\expatreader.py", line 42, in parse
xmlreader.IncrementalParser.parse(self, source)
File "c:\python20\lib\xml\sax\xmlreader.py", line 120, in parse
self.feed(buffer)
File "c:\python20\lib\xml\sax\expatreader.py", line 81, in feed
self._parser.Parse(data, isFinal)
TypeError: not enough arguments; expected 4, got 2
The code I have been using is as follows:-
from xml.sax import make_parser
from xml.sax.handler import ContentHandler, feature_namespaces
p = make_parser()
p.setFeature(feature_namespaces, 0)
dh = CommandParser(self)
p.setContentHandler(dh)
p.parse(self.commandFile)
p.close()
class CommandParser(ContentHandler):
def __init__(self, instance):
self.instance = instance
self.in_NFCM = 0
self.in_Command = 0
self.in_Name = 0
self.in_Syntax = 0
self.command = ''
self.syntax = ''
def startElement(self, name , attrs):
if name == 'NCFM':
self.in_NCFM = 1
elif name == 'Command' and self.in_NCFM:
self.in_Command = 1
elif name == 'Name' and self.in_Command:
self.in_Name = 1
elif name == 'Syntax' and self.in_Command:
self.in_Syntax = 1
def endElement(self, name):
if name == 'NCFM':
self.in_NCFM = 0
elif name == 'Command' and self.in_NCFM:
self.instance.addCommand(self.command,self.syntax)
self.in_Command = 0
self.command = ''
self.syntax = ''
elif name == 'Name' and self.in_Command:
self.in_Name = 0
elif name == 'Syntax' and self.in_Command:
self.in_Syntax = 0
def characters(self, ch, start, length):
if self.in_Name:
self.command = self.command + ch[start:start+length]
if self.in_Syntax:
self.syntax = self.syntax + ch[start:start+length]
Should I be using the default expat parser?
Can anyone help?
More information about the Python-list
mailing list