Exemplo n.º 1
0
  def parse(self) :
    if (isinstance(self.source,unicode)) :
      # Create a string source
      file = io.StringIO(self.source)
      input = InputSource(file)
      input.setEncoding("utf-8")
      input.setCharacterStream(file)
      # There is a bug in xml.sax.saxutils.prepare_input_source
      input.setByteStream(file)
      input.setSystemId(None)
    elif (isinstance(self.source,InputSource)):
      input = self.source
    else:
      raise Exception("Parse source must be either string or InputSource")

    # Create the parser/xmlreader
    parser = xml.sax.make_parser()

    # Tell the parser to use our handler(s)
    parser.setContentHandler(self)
    #parser.setErrorHandler(self)

    #parser.setFeature(xml.sax.handler.feature_namespaces,True)
    # Shut off dtd validation
    parser.setFeature(xml.sax.handler.feature_validation,False)
    parser.setFeature(xml.sax.handler.feature_external_ges, False)

    # Parse the document
    parser.parse(input)
Exemplo n.º 2
0
def test_expat_inpsource_location():
    parser = create_parser()
    parser.setContentHandler(ContentHandler())  # do nothing
    source = InputSource()
    source.setByteStream(StringIO("<foo bar foobar>"))  #ill-formed
    name = "a file name"
    source.setSystemId(name)
    try:
        parser.parse(source)
    except SAXException, e:
        return e.getSystemId() == name
Exemplo n.º 3
0
def test_expat_inpsource_location():
    parser = make_parser()
    parser.setContentHandler(ContentHandler()) # do nothing
    source = InputSource()
    source.setByteStream(StringIO("<foo bar foobar>"))   #ill-formed
    name = "a file name"
    source.setSystemId(name)
    try:
        parser.parse(source)
    except SAXException, e:
        return e.getSystemId() == name
Exemplo n.º 4
0
 def test_expat_inpsource_location(self):
     parser = create_parser()
     parser.setContentHandler(ContentHandler())  # do nothing
     source = InputSource()
     source.setByteStream(BytesIO(b"<foo bar foobar>"))  #ill-formed
     name = "a file name"
     source.setSystemId(name)
     try:
         parser.parse(source)
         self.fail()
     except SAXException as e:
         self.assertEqual(e.getSystemId(), name)
Exemplo n.º 5
0
 def test_expat_inpsource_location(self):
     parser = create_parser()
     parser.setContentHandler(ContentHandler()) # do nothing
     source = InputSource()
     source.setByteStream(StringIO("<foo bar foobar>"))   #ill-formed
     name = "a file name"
     source.setSystemId(name)
     try:
         parser.parse(source)
         self.fail()
     except SAXException as e:
         self.assertEqual(e.getSystemId(), name)
Exemplo n.º 6
0
 def resolveEntity(self, publicId, systemId):
     source = InputSource()
     source.setSystemId(systemId)
     try:
         dtdPath = self.knownDTDs[systemId]
     except KeyError:
         raise process.ProcessingFailure(
             "Invalid DTD system identifier (%r) in %s.  Only "
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "
             "is allowed." % (systemId, self.filename))
     source.setByteStream(dtdPath.open())
     return source
Exemplo n.º 7
0
 def resolveEntity(self, publicId, systemId):
     source = InputSource()
     source.setSystemId(systemId)
     try:
         dtdPath = self.knownDTDs[systemId]
     except KeyError:
         raise process.ProcessingFailure(
             "Invalid DTD system identifier (%r) in %s.  Only "
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "
             "is allowed." % (systemId, self.filename))
     source.setByteStream(dtdPath.open())
     return source
Exemplo n.º 8
0
 def test_expat_inpsource_location(self):
     parser = create_parser()
     parser.setContentHandler(ContentHandler())
     source = InputSource()
     source.setByteStream(BytesIO(b'<foo bar foobar>'))
     name = 'a file name'
     source.setSystemId(name)
     try:
         parser.parse(source)
         self.fail()
     except SAXException as e:
         self.assertEqual(e.getSystemId(), name)
Exemplo n.º 9
0
    def caching_prepare_input_source(source, base=None):
        if isinstance(source, InputSource):
            return source

        full_uri = urljoin(base or "", source)

        # Convert StringIO to string
        if hasattr(full_uri, "getvalue"):
            full_uri = full_uri.getvalue()

        if not full_uri.startswith("http:"):
            args = (source,) if base is None else (source, base)
            return old_prepare_input_source(*args)

        document = urlopen(full_uri, proxies=proxies)

        input_source = InputSource()
        input_source.setSystemId(source)
        input_source.setByteStream(document)

        return input_source
Exemplo n.º 10
0
 def resolveEntity(self, publicId, systemId):
     self.entities.append((publicId, systemId))
     source = InputSource()
     source.setPublicId(publicId)
     source.setSystemId(systemId)
     return source
Exemplo n.º 11
0
 def resolveEntity(self, publicId, systemId):
     self.entities.append((publicId, systemId))
     source = InputSource()
     source.setPublicId(publicId)
     source.setSystemId(systemId)
     return source
Exemplo n.º 12
0
# regression test for SAX 2.0