Expat crashing Python (was: RE: [XML-SIG] Parsing DTDs)

Radestock, Guenter guenter.radestock@sap.com
Mon, 12 Feb 2001 18:26:29 +0100


> > like there is no intermediate representation of the DTD 
> that can (or should)
> > be used for other purposes than validating XML.  Is this 
> correct?  Have
> > I looked at the wrong piece of code (i.e. is there something in the
> > 4suite package I could use?
> 
> You can access a DTD object that gets generated from the parsing. The
> following sample code comes from the xmltools utility set 
> that uses the
> DTD information to generate contextual menus for an XML 
> editor. There is
> extensive API documentation on Lars Marius Garshol's page
> (http://www.garshol.priv.no/download/software/xmlproc/)
> 

Thanks a lot for the quick help.  It works perfectly well now.

There seems to be a problem in pyexpat.  It crashes, when I feed it
a file with an incorrect XML prefix, something like:

<?xml version="1.0" encoding="iso-8859-1" tralala="123"?>

or

<?xml encoding="iso-8859-1" ?>

I can reproduce this under Windows 2000, Python 2.0 (bombs out of python
with
a memory error):

---
from xml.parsers import expat
po = expat.ParserCreate('ISO-8859-1')
po.Parse("""<?xml encoding="iso-8859-1" ?><test></test>""", 1)
---

***thinking a little***

trying outside emacs, I see a stack trace before it bombs out.  so I
insert an exception handler:

---
from xml.parsers import expat
po = expat.ParserCreate('ISO-8859-1')
exc = None
try:
    po.Parse("""<?xml encoding="iso-8859-1" ?><test></test>""", 1)
except exc, arg:
    global xxx
    xxx = (exc, arg)
---

and now I get:

---
Traceback (most recent call last):
  File "C:\perforce\workplace\ims\dev\python-api\python\xml\expattest.py",
line
9, in ?

SystemError: 'finally' pops bad exception
---

Seems to be a problem of some exception handler in the Expat module.