[4suite] Using xml.parsers.expat
Martin v. Loewis
martin at mira.cs.tu-berlin.de
Thu Feb 1 15:30:41 MST 2001
I noticed that 4Suite uses xml.parsers.pyexpat in a number of
places. That is unreliable, as that parser is built by PyXML only if
the pyexpat version in the Python Core is unusable. As a result,
people using Python 2.0a? will get import errors after they build the
current PyXML and 4Suite.
Instead, xml.parsers.expat should be used, which was available since
Python 2.0. This is a wrapper around the "best" pyexpat module,
i.e. it uses xml.parsers.pyexpat if available and pyexpat if not.
Please find a patch attached that changes the relevant sources.
Regards,
Martin
Index: Dom/ext/reader/PyExpat.py
===================================================================
RCS file: /var/local/cvsroot/Ft/Dom/ext/reader/PyExpat.py,v
retrieving revision 1.11
diff -u -r1.11 PyExpat.py
--- Dom/ext/reader/PyExpat.py 2001/01/17 22:38:17 1.11
+++ Dom/ext/reader/PyExpat.py 2001/02/01 22:09:58
@@ -8,7 +8,7 @@
Components for reading XML files from PyExpat (Python 1.6, 2.0 or from PyXML).
WWW: http://4suite.com/4DOM e-mail: support at 4suite.com
-Copyright (c) 2000 Fourthought Inc, USA. All Rights Reserved.
+Copyright (c) 2000, 2001 Fourthought Inc, USA. All Rights Reserved.
See http://4suite.com/COPYRIGHT for license and copyright information
"""
@@ -22,7 +22,7 @@
from xml.dom import Attr
from xml.dom.ext import reader
-from xml.parsers import pyexpat
+from xml.parsers import expat
class Reader(reader.Reader):
def __init__(self):
@@ -47,7 +47,7 @@
return
def initParser(self):
- self.parser=pyexpat.ParserCreate()
+ self.parser=expat.ParserCreate()
self.parser.StartElementHandler = self.startElement
self.parser.EndElementHandler = self.endElement
self.parser.CharacterDataHandler = self.characters
@@ -68,7 +68,7 @@
from xml.dom import XML_PARSE_ERR
if self._rootNode: ReleaseNode(self._rootNode)
if self._ownerDoc: ReleaseNode(self._ownerDoc)
- raise FtDomException(XML_PARSE_ERR, (self.parser.ErrorLineNumber, self.parser.ErrorColumnNumber, pyexpat.ErrorString(self.parser.ErrorCode)))
+ raise FtDomException(XML_PARSE_ERR, (self.parser.ErrorLineNumber, self.parser.ErrorColumnNumber, expat.ErrorString(self.parser.ErrorCode)))
self._completeTextNode()
return self._rootNode or self._ownerDoc
Index: Lib/pDomlette.py
===================================================================
RCS file: /var/local/cvsroot/Ft/Lib/pDomlette.py,v
retrieving revision 1.54
diff -u -r1.54 pDomlette.py
--- Lib/pDomlette.py 2001/01/28 07:00:40 1.54
+++ Lib/pDomlette.py 2001/02/01 22:10:00
@@ -9,7 +9,7 @@
normalized
WWW: http://4suite.com/4XSLT e-mail: support at 4suite.com
-Copyright (c) 2000 Fourthought Inc, USA. All Rights Reserved.
+Copyright (c) 2000, 2001 Fourthought Inc, USA. All Rights Reserved.
See http://4suite.com/COPYRIGHT for license and copyright information
"""
@@ -32,7 +32,7 @@
import urllib
import Ft.Lib
-from xml.parsers import pyexpat
+from xml.parsers import expat
DOM_IMP = Ft.Lib.PDOMLETTE
@@ -571,7 +571,7 @@
if not success:
if self._rootNode: ReleaseNode(self._rootNode)
if self._ownerDoc: ReleaseNode(self._ownerDoc)
- raise Ft.Lib.FtException(Ft.Lib.Error.XML_PARSE_ERROR, (p.ErrorLineNumber, p.ErrorColumnNumber, pyexpat.ErrorString(p.ErrorCode)))
+ raise Ft.Lib.FtException(Ft.Lib.Error.XML_PARSE_ERROR, (p.ErrorLineNumber, p.ErrorColumnNumber, expat.ErrorString(p.ErrorCode)))
self._completeTextNode()
return self.getRootNode()
@@ -599,7 +599,7 @@
handler = Utf8OnlyHandler(self)
else:
handler = self
- self.parser=pyexpat.ParserCreate()
+ self.parser=expat.ParserCreate()
self.parser.StartElementHandler = handler.startElement
self.parser.EndElementHandler = handler.endElement
self.parser.CharacterDataHandler = handler.characters
Index: Xslt/StylesheetReader.py
===================================================================
RCS file: /var/local/cvsroot/Ft/Xslt/StylesheetReader.py,v
retrieving revision 1.54
diff -u -r1.54 StylesheetReader.py
--- Xslt/StylesheetReader.py 2001/01/17 22:38:22 1.54
+++ Xslt/StylesheetReader.py 2001/02/01 22:10:01
@@ -9,7 +9,7 @@
Create a stylesheet object
WWW: http://4suite.com/4XSLT e-mail: support at 4suite.com
-Copyright (c) 1999-2000 Fourthought Inc, USA. All Rights Reserved.
+Copyright (c) 1999-2001 Fourthought Inc, USA. All Rights Reserved.
See http://4suite.com/COPYRIGHT for license and copyright information
"""
@@ -249,7 +249,7 @@
### Domlette Parser Interface ###
-from xml.parsers import pyexpat
+from xml.parsers import expat
from Ft.Lib.pDomlette import Utf8OnlyHandler
class StylesheetReader(ReaderBase.DomletteReader):
@@ -277,7 +277,7 @@
if not success:
self.releaseNode(self._rootNode)
self.releaseNode(self._ownerDoc)
- raise XsltException(Error.STYLESHEET_PARSE_ERROR, (baseUri, p.ErrorLineNumber, p.ErrorColumnNumber, pyexpat.ErrorString(p.ErrorCode)))
+ raise XsltException(Error.STYLESHEET_PARSE_ERROR, (baseUri, p.ErrorLineNumber, p.ErrorColumnNumber, expat.ErrorString(p.ErrorCode)))
self._completeTextNode()
root = self._rootNode or self._ownerDoc
@@ -318,7 +318,7 @@
handler = Utf8OnlyHandler(self)
else:
handler = self
- self.parser=pyexpat.ParserCreate()
+ self.parser=expat.ParserCreate()
self.parser.StartElementHandler = handler.startElement
self.parser.EndElementHandler = handler.endElement
self.parser.CharacterDataHandler = handler.characters
More information about the 4suite
mailing list