/[thuban]/branches/WIP-pyshapelib-bramz/test/xmlsupport.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/test/xmlsupport.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1245 by bh, Thu Jun 19 19:29:23 2003 UTC revision 1257 by bh, Fri Jun 20 12:22:25 2003 UTC
# Line 9  Line 9 
9    
10  import sys  import sys
11  import os  import os
12    from StringIO import StringIO
13    import xml.sax
14    import xml.sax.handler
15    from xml.sax import make_parser, ErrorHandler, SAXNotRecognizedException
16    
17  import support  import support
18    
19  try:  try:
# Line 46  class ValidationTest: Line 51  class ValidationTest:
51          return os.path.join(support.resource_dir(), "XML", filename)          return os.path.join(support.resource_dir(), "XML", filename)
52    
53    
54    #
55    # Classes and functions to convert XML to a normalized list
56    # representation for comparisons
57    #
58    
59    class SaxEventLister(xml.sax.handler.ContentHandler):
60    
61        """Create a normalized list representation containing the SAX events
62        """
63    
64        def __init__(self):
65            self.eventlist = []
66    
67        def startElementNS(self, name, qname, attrs):
68            items = attrs.items()
69            items.sort()
70            self.eventlist.append(("start", name, qname, items))
71    
72        def endElementNS(self, name, qname):
73            self.eventlist.append(("end", name, qname))
74    
75    
76    def sax_eventlist(data = None, filename = None):
77        """Return a list of SAX event generated for a given XML source
78    
79        The xml source may either be a string with the actual XML, in which
80        case it should be given as the keyword argument data or the name of
81        an xml file given as the keyword argument filename
82        """
83        if filename is not None:
84            data = open(filename).read()
85        handler = SaxEventLister()
86        parser = make_parser()
87        parser.setContentHandler(handler)
88        parser.setErrorHandler(ErrorHandler())
89        parser.setFeature(xml.sax.handler.feature_namespaces, 1)
90    
91        #
92        # see comment at the end of Thuban/Model/load.py
93        #
94        try:
95            parser.setFeature(xml.sax.handler.feature_validation, 0)
96            parser.setFeature(xml.sax.handler.feature_external_ges, 0)
97            parser.setFeature(xml.sax.handler.feature_external_pes, 0)
98        except SAXNotRecognizedException:
99            pass
100    
101        inpsrc = xml.sax.InputSource()
102        inpsrc.setByteStream(StringIO(data))
103        parser.parse(inpsrc)
104    
105        return handler.eventlist
106    
107    
108  def print_summary_message():  def print_summary_message():
109      """Print a summary message about validation tests      """Print a summary message about validation tests

Legend:
Removed from v.1245  
changed lines
  Added in v.1257

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26