[Python-checkins] CVS: python/dist/src/Lib/xml/sax saxutils.py,1.3,1.4
Lars Marius Garshol
python-dev@python.org
Thu, 21 Sep 2000 01:25:31 -0700
Update of /cvsroot/python/python/dist/src/Lib/xml/sax
In directory slayer.i.sourceforge.net:/tmp/cvs-serv3562
Modified Files:
saxutils.py
Log Message:
Updated XMLGenerator to new DocumentHandler interface (patch 101572).
Index: saxutils.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/xml/sax/saxutils.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** saxutils.py 2000/09/18 17:40:22 1.3
--- saxutils.py 2000/09/21 08:25:28 1.4
***************
*** 24,28 ****
class XMLGenerator(handler.ContentHandler):
! def __init__(self, out=None):
if out is None:
import sys
--- 24,28 ----
class XMLGenerator(handler.ContentHandler):
! def __init__(self, out=None, encoding="iso-8859-1"):
if out is None:
import sys
***************
*** 30,58 ****
handler.ContentHandler.__init__(self)
self._out = out
# ContentHandler methods
def startDocument(self):
! self._out.write('<?xml version="1.0" encoding="iso-8859-1"?>\n')
def startPrefixMapping(self, prefix, uri):
! pass
def endPrefixMapping(self, prefix):
! pass
def startElement(self, name, attrs):
- if type(name) is type(()):
- uri, localname, prefix = name
- name = "%s:%s"%(prefix,localname)
self._out.write('<' + name)
for (name, value) in attrs.items():
self._out.write(' %s="%s"' % (name, escape(value)))
self._out.write('>')
!
def endElement(self, name):
- # FIXME: not namespace friendly yet
self._out.write('</%s>' % name)
def characters(self, content):
self._out.write(escape(content))
--- 30,71 ----
handler.ContentHandler.__init__(self)
self._out = out
+ self._ns_contexts = [{}] # contains uri -> prefix dicts
+ self._current_context = self._ns_contexts[-1]
+ self._encoding = encoding
# ContentHandler methods
def startDocument(self):
! self._out.write('<?xml version="1.0" encoding="%s"?>\n' %
! self._encoding)
def startPrefixMapping(self, prefix, uri):
! self._ns_contexts.append(self._current_context.copy())
! self._current_context[uri] = prefix
def endPrefixMapping(self, prefix):
! del self._current_context[-1]
def startElement(self, name, attrs):
self._out.write('<' + name)
for (name, value) in attrs.items():
self._out.write(' %s="%s"' % (name, escape(value)))
self._out.write('>')
!
def endElement(self, name):
self._out.write('</%s>' % name)
+ def startElementNS(self, name, qname, attrs):
+ name = self._current_context[name[0]] + ":" + name[1]
+ self._out.write('<' + name)
+ for (name, value) in attrs.items():
+ name = self._current_context[name[0]] + ":" + name[1]
+ self._out.write(' %s="%s"' % (name, escape(value)))
+ self._out.write('>')
+
+ def endElementNS(self, name, qname):
+ name = self._current_context[name[0]] + ":" + name[1]
+ self._out.write('</%s>' % name)
+
def characters(self, content):
self._out.write(escape(content))
***************
*** 103,109 ****
def startElement(self, name, attrs):
self._cont_handler.startElement(name, attrs)
! def endElement(self, name, qname):
! self._cont_handler.endElement(name, qname)
def characters(self, content):
--- 116,128 ----
def startElement(self, name, attrs):
self._cont_handler.startElement(name, attrs)
+
+ def endElement(self, name):
+ self._cont_handler.endElement(name)
+
+ def startElementNS(self, name, qname, attrs):
+ self._cont_handler.startElement(name, attrs)
! def endElementNS(self, name, qname):
! self._cont_handler.endElementNS(name, qname)
def characters(self, content):