Commit a12adfe4 authored by Fred Drake's avatar Fred Drake

Reduce the number of imports needed.

Make the code conform better to the Python style guide.
parent 480abc27
""" """\
A library of useful helper classes to the sax classes, for the A library of useful helper classes to the SAX classes, for the
convenience of application and driver writers. convenience of application and driver writers.
$Id$
""" """
import types, string, sys
import handler import handler
def escape(data, entities = {}):
def escape(data, entities={}):
"""Escape &, <, and > in a string of data. """Escape &, <, and > in a string of data.
You can escape other strings of data by passing a dictionary as You can escape other strings of data by passing a dictionary as
the optional entities parameter. The keys and values must all be the optional entities parameter. The keys and values must all be
strings; each key will be replaced with its corresponding value. strings; each key will be replaced with its corresponding value.
""" """
data = string.replace(data, "&", "&amp;") data = data.replace("&", "&amp;")
data = string.replace(data, "<", "&lt;") data = data.replace("<", "&lt;")
data = string.replace(data, ">", "&gt;") data = data.replace(">", "&gt;")
for chars, entity in entities.items(): for chars, entity in entities.items():
data = string.replace(data, chars, entity) data = data.replace(chars, entity)
return data return data
class XMLGenerator(handler.ContentHandler): class XMLGenerator(handler.ContentHandler):
def __init__(self, out = sys.stdout): def __init__(self, out=None):
if out is None:
import sys
out = sys.stdout
handler.ContentHandler.__init__(self) handler.ContentHandler.__init__(self)
self._out = out self._out = out
# ContentHandler methods # ContentHandler methods
def startDocument(self): def startDocument(self):
self._out.write('<?xml version="1.0" encoding="iso-8859-1"?>\n') self._out.write('<?xml version="1.0" encoding="iso-8859-1"?>\n')
...@@ -39,9 +42,9 @@ class XMLGenerator(handler.ContentHandler): ...@@ -39,9 +42,9 @@ class XMLGenerator(handler.ContentHandler):
pass pass
def startElement(self, name, attrs): def startElement(self, name, attrs):
if type(name)==type(()): if type(name) is type(()):
uri, localname, prefix=name uri, localname, prefix = name
name="%s:%s"%(prefix,localname) name = "%s:%s"%(prefix,localname)
self._out.write('<' + name) self._out.write('<' + name)
for (name, value) in attrs.items(): for (name, value) in attrs.items():
self._out.write(' %s="%s"' % (name, escape(value))) self._out.write(' %s="%s"' % (name, escape(value)))
...@@ -56,10 +59,11 @@ class XMLGenerator(handler.ContentHandler): ...@@ -56,10 +59,11 @@ class XMLGenerator(handler.ContentHandler):
def ignorableWhitespace(self, content): def ignorableWhitespace(self, content):
self._out.write(content) self._out.write(content)
def processingInstruction(self, target, data): def processingInstruction(self, target, data):
self._out.write('<?%s %s?>' % (target, data)) self._out.write('<?%s %s?>' % (target, data))
class XMLFilterBase: class XMLFilterBase:
"""This class is designed to sit between an XMLReader and the """This class is designed to sit between an XMLReader and the
client application's event handlers. By default, it does nothing client application's event handlers. By default, it does nothing
...@@ -80,10 +84,10 @@ class XMLFilterBase: ...@@ -80,10 +84,10 @@ class XMLFilterBase:
self._err_handler.warning(exception) self._err_handler.warning(exception)
# ContentHandler methods # ContentHandler methods
def setDocumentLocator(self, locator): def setDocumentLocator(self, locator):
self._cont_handler.setDocumentLocator(locator) self._cont_handler.setDocumentLocator(locator)
def startDocument(self): def startDocument(self):
self._cont_handler.startDocument() self._cont_handler.startDocument()
...@@ -138,7 +142,7 @@ class XMLFilterBase: ...@@ -138,7 +142,7 @@ class XMLFilterBase:
def setLocale(self, locale): def setLocale(self, locale):
self._parent.setLocale(locale) self._parent.setLocale(locale)
def getFeature(self, name): def getFeature(self, name):
return self._parent.getFeature(name) return self._parent.getFeature(name)
...@@ -150,4 +154,3 @@ class XMLFilterBase: ...@@ -150,4 +154,3 @@ class XMLFilterBase:
def setProperty(self, name, value): def setProperty(self, name, value):
self._parent.setProperty(name, value) self._parent.setProperty(name, value)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment