Message 81111 - Python tracker (original) (raw)

I just discovered another really fun wrinkle in this.

Let's say I want to have my entity resolver return a reference to my local copy of a DTD. I write:

source = xml.sax.InputSource()
source.setPublicId(publicId)
source.setSystemId(systemId)
source.setCharacterStream(file(path_to_local_copy))
return source

This will appear to work.

However, the parser will still silently fetch the DTD over the network!
I needed to call source.setByteStream()--character streams are silently ignored.

I'd never have noticed this if I hadn't used strace on my process and noticed a slew of recvfrom() calls that shouldn't have been there.