mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			46 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			46 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])
							 |