mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						|
A simple demo that reads in an XML document and spits out an equivalent,
 | 
						|
but not necessarily identical, document.
 | 
						|
"""
 | 
						|
 | 
						|
import sys, string
 | 
						|
 | 
						|
from xml.sax import saxutils, handler, make_parser
 | 
						|
 | 
						|
# --- The ContentHandler
 | 
						|
 | 
						|
class ContentGenerator(handler.ContentHandler):
 | 
						|
 | 
						|
    def __init__(self, out = sys.stdout):
 | 
						|
        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 startElement(self, name, attrs):
 | 
						|
        self._out.write('<' + name)
 | 
						|
        for (name, value) in attrs.items():
 | 
						|
            self._out.write(' %s="%s"' % (name, saxutils.escape(value)))
 | 
						|
        self._out.write('>')
 | 
						|
 | 
						|
    def endElement(self, name):
 | 
						|
        self._out.write('</%s>' % name)
 | 
						|
 | 
						|
    def characters(self, content):
 | 
						|
        self._out.write(saxutils.escape(content))
 | 
						|
 | 
						|
    def ignorableWhitespace(self, content):
 | 
						|
        self._out.write(content)
 | 
						|
 | 
						|
    def processingInstruction(self, target, data):
 | 
						|
        self._out.write('<?%s %s?>' % (target, data))
 | 
						|
 | 
						|
# --- The main program
 | 
						|
 | 
						|
parser = make_parser()
 | 
						|
parser.setContentHandler(ContentGenerator())
 | 
						|
parser.parse(sys.argv[1])
 |