⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnometransformer.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
  // -- transform --  /**   * Transforms the given source and writes the result to the   * given target.   */  public void transform (Source source, Result result)    throws TransformerException  {    if (source instanceof StreamSource)      {        try          {            StreamSource ss = (StreamSource) source;            NamedInputStream in = XMLJ.getInputStream (ss);            String publicId = ss.getPublicId ();            String systemId = ss.getSystemId ();            String base = XMLJ.getBaseURI (systemId);            byte[] detectBuffer = in.getDetectBuffer ();            if (detectBuffer == null)              {                throw new TransformerException ("No document element");              }            if (result instanceof StreamResult)              {                OutputStream out = XMLJ.getOutputStream ((StreamResult) result);                transformStreamToStream (in, detectBuffer, publicId, systemId,                                         base, (resolver != null),                                         (errorListener != null), out);              }            else if (result instanceof DOMResult)              {                DOMResult dr = (DOMResult) result;                GnomeDocument ret =                  transformStreamToDoc (in, detectBuffer, publicId, systemId,                                        base, (resolver != null),                                        (errorListener != null));                dr.setNode (ret);                dr.setSystemId (null);              }            else if (result instanceof SAXResult)              {                SAXResult sr = (SAXResult) result;                transformStreamToSAX (in, detectBuffer, publicId, systemId,                                      base, (resolver != null),                                      (errorListener != null),                                      getSAXContext (sr));              }            else              {                String msg = "Result type not supported (" + result + ")";                throw new TransformerConfigurationException (msg);              }          }        catch (IOException e)          {            throw new TransformerException (e);          }      }    else if (source instanceof DOMSource)      {        DOMSource ds = (DOMSource) source;        Node node = ds.getNode ();        if (!(node instanceof GnomeDocument))          {            String msg = "Node is not a GnomeDocument (" + node + ")";            throw new TransformerException (msg);          }        GnomeDocument doc = (GnomeDocument) node;        if (result instanceof StreamResult)          {            try              {                OutputStream out = XMLJ.getOutputStream ((StreamResult) result);                transformDocToStream (doc, out);              }            catch (IOException e)              {                throw new TransformerException (e);              }          }        else if (result instanceof DOMResult)          {            DOMResult dr = (DOMResult) result;            GnomeDocument ret = transformDocToDoc (doc);            dr.setNode (ret);            dr.setSystemId (null);          }        else if (result instanceof SAXResult)          {            SAXResult sr = (SAXResult) result;            transformDocToSAX (doc, getSAXContext (sr));          }        else          {            String msg = "Result type not supported";            throw new TransformerConfigurationException (msg);          }      }    else      {        String msg = "Source type not supported";        throw new TransformerConfigurationException (msg);      }  }  private GnomeXMLReader getSAXContext (SAXResult result)  {    GnomeXMLReader ctx = new GnomeXMLReader ();    ctx.setContentHandler (result.getHandler ());    ctx.setLexicalHandler (result.getLexicalHandler ());    if (errorListener != null)      {        ErrorHandler errorHandler =          new ErrorListenerErrorHandler (errorListener);        ctx.setErrorHandler (errorHandler);      }    if (resolver != null)      {        EntityResolver entityResolver =          new URIResolverEntityResolver (resolver);        ctx.setEntityResolver (entityResolver);      }    return ctx;  }  private native void transformStreamToStream (InputStream in,                                               byte[] detectBuffer,                                               String publicId,                                               String systemId,                                               String base,                                               boolean entityResolver,                                               boolean errorHandler,                                               OutputStream out)    throws TransformerException;  private native GnomeDocument transformStreamToDoc (InputStream in,                                                     byte[] detectBuffer,                                                     String publicId,                                                     String systemId,                                                     String base,                                                     boolean entityResolver,                                                     boolean errorHandler)    throws TransformerException;  private native void transformStreamToSAX (InputStream in,                                            byte[] detectBuffer,                                            String publicId,                                            String systemId,                                            String base,                                            boolean entityResolver,                                            boolean errorHandler,                                            GnomeXMLReader out)    throws TransformerException;  private native void transformDocToStream (GnomeDocument in,                                            OutputStream out)    throws TransformerException;  private native GnomeDocument transformDocToDoc (GnomeDocument in)    throws TransformerException;  private native void transformDocToSAX (GnomeDocument in,                                         GnomeXMLReader out)    throws TransformerException;  /*   * Retrieve parameters as a string array.   * This is a convenience method called from native code.   */  private String[] getParameterArray ()  {    String[] parameterArray = new String[parameters.size () * 2];    int index = 0;    for (Iterator it = parameters.keySet ().iterator ();         it.hasNext ();         ++index)      {        String parameterKey = (String) it.next ();        String parameterValue = (String) parameters.get (parameterKey);        parameterArray[index * 2 + 0] = parameterKey;        parameterArray[index * 2 + 1] =          "'" + ((parameterValue != null) ? parameterValue : "") + "'";        // FIXME encode parameter value correctly for XPath      }    return parameterArray;  }  // -- Free xsltStylesheet handle --  public void finalize ()  {    if (stylesheet != null)      {        free ();        stylesheet = null;      }  }  private native void free ();  // -- Callbacks --  private InputStream resolveEntity (String publicId, String systemId)    throws TransformerException  {    if (resolver != null)      {        systemId = resolver.resolve (null, systemId).getSystemId ();      }    if (systemId == null)      {        return null;      }    try      {        URL url = new URL (systemId);        return XMLJ.getInputStream (url);      }    catch (IOException e)      {        throw new TransformerException (e);      }  }    private void setDocumentLocator (Object ctx, Object loc)  {  }  private void warning (String message,                        int lineNumber,                        int columnNumber,                        String publicId,                        String systemId)    throws TransformerException  {    if (errorListener == null)      {        return;      }    SourceLocator l = new StandaloneLocator (lineNumber,                                             columnNumber,                                             publicId,                                             systemId);    errorListener.warning (new TransformerException (message, l));  }  private void error (String message,                      int lineNumber,                      int columnNumber,                      String publicId,                      String systemId)    throws TransformerException  {    if (errorListener == null)      {        return;      }    SourceLocator l = new StandaloneLocator (lineNumber,                                             columnNumber,                                             publicId,                                             systemId);    errorListener.error (new TransformerException (message, l));  }    private void fatalError (String message,                           int lineNumber,                           int columnNumber,                           String publicId,                           String systemId)    throws TransformerException  {    if (errorListener == null)      {        return;      }    SourceLocator l = new StandaloneLocator (lineNumber,                                             columnNumber,                                             publicId,                                             systemId);    errorListener.fatalError (new TransformerException (message, l));  }  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -