def setPage(self, url):

        ref = url.getRef()
        protocol = url.getProtocol()
        the_file = url.getFile()

        if protocol != "file" or the_file.endswith("front.html"):
            url = self.homeUrl
            the_file = url.getFile()

        if self.cached_pages.has_key(the_file):
            if self.htmlPane.getDocument(
            ) != self.cached_pages[the_file]:  # or ref:
                #self.htmlPane.setDocument( self.fakeDoc )
                self.htmlPane.setDocument(self.cached_pages[the_file])
        else:

            try:
                doc = self.documentBuilder.parse(url.getContent())
            except java.lang.Exception, x:
                x.printStackTrace()
                return self.goHome()

            style = doc.getElementsByTagName("style")
            style_list = []
            for x in xrange(style.length):
                node = style.item(x)
                style_list.append(node)
            for x2 in style_list:
                parent = x2.getParentNode()
                parent.removeChild(x2)

            meta = doc.getElementsByTagName("meta")
            meta_list = []
            for x3 in xrange(meta.length):
                mnode = meta.item(x3)
                meta_list.append(mnode)
            for x4 in meta_list:
                parent = x4.getParentNode()
                parent.removeChild(x4)

            trans = transform.TransformerFactory.newInstance().newTransformer()
            dsource = tdom.DOMSource(doc)
            sw = io.StringWriter()
            sr = stream.StreamResult(sw)
            trans.transform(dsource, sr)
            ekit = self.htmlPane.getEditorKit().clone()
            s = sw.toString()
            spot = s.find("\n")
            s = s[spot:]  # remove the xml prolog...
            sr = io.StringReader(s)
            hdoc = ekit.createDefaultDocument()
            hdoc.setBase(url)
            try:
                ekit.read(sr, hdoc, 0)
            except java.lang.Exception, x:
                x.printStackTrace()
                return self.goHome()
예제 #2
0
 def resolveEntity( self, arg1, arg2 ):
     ins = sax.InputSource()
     bais = io.ByteArrayInputStream([])
     ins.setByteStream( bais )
     sr = io.StringReader( "" )
     ins.setCharacterStream( sr )
     ins.setPublicId( arg1 )
     ins.setSystemId( arg2 )
     return ins
예제 #3
0
    def getLeoOutline2(self, s, reassignIndices=True):

        self.usingClipboard = True
        self.fileBuffer = s
        self.fileIndex = 0
        self.tnodesDict = {}
        self.descendentUnknownAttributesDictList = []

        #if not reassignIndices:
        if reassignIndices:
            #@        << recreate tnodesDict >>
            #@+node:zorcanda!.20050912152326.1:<< recreate tnodesDict >>
            nodeIndices = g.app.nodeIndices

            self.tnodesDict = {}

            for t in self.c.all_unique_tnodes_iter():
                tref = t.fileIndex
                if nodeIndices.isGnx(tref):
                    tref = nodeIndices.toString(tref)
                self.tnodesDict[tref] = t

            if 0:
                print '-' * 40
                for key in self.tnodesDict.keys():
                    print key, self.tnodesDict[key]
            #@nonl
            #@-node:zorcanda!.20050912152326.1:<< recreate tnodesDict >>
            #@nl

        try:
            import org.xml.sax as sax
            import javax.xml.parsers as jparse
            import java.io as io
            #data = binascii.unhexlify( bdata )
            dbf = jparse.DocumentBuilderFactory.newInstance()
            db = dbf.newDocumentBuilder()
            sr = io.StringReader(s)
            ins = sax.InputSource(sr)
            doc = db.parse(ins)
            leo_file = doc.getDocumentElement()
            cnodes = leo_file.getChildNodes()
            elements = {}
            for z in xrange(cnodes.length):
                element = cnodes.item(z)
                elements[element.getNodeName()] = element

            #vnodes = elements[ 'vnodes' ]
            #v = self.getVnodes2( vnodes, reassignIndices )
            #self.getXmlVersionTag() # leo.py 3.0
            #self.getXmlStylesheetTag() # 10/25/02
            #self.getTag("<leo_file>") # <leo_file/> is not valid.
            #self.getClipboardHeader()
            #self.getVnodes(reassignIndices)
            #self.getTnodes()
            #self.getTag("</leo_file>")
            tnodes_element = elements['tnodes']
            tchildren = tnodes_element.getElementsByTagName("t")
            tnodes = {}
            for z in xrange(tchildren.length):
                tnode_element = tchildren.item(z)
                tx = tnode_element.getAttribute("tx")
                atnode = self.newTnode(tx)
                atnode.bodyString = tnode_element.getTextContent()

            #v = self.finishPaste(reassignIndices)
            vnodes = elements['vnodes']
            v = self.getVnodes2(vnodes, reassignIndices)

        except invalidPaste, ip:
            v = None
            g.es("Invalid Paste Retaining Clones", color="blue")
예제 #4
0
def _fromXML(xml, version=1.0):
  """Parses a XML string into a filter object."""

  ogc, ogcconfig  = _ogc(version)
  parser = Parser(ogcconfig)
  return parser.parse(io.StringReader(xml))