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

📄 jdomresult.java

📁 openlogic-jdom-1.1-all-src-1.zip 可以用于操作xml文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * This is needed to handle XML comments and the like.  If the   * lexical handler is not set, an attempt should be made by the   * transformer to cast the ContentHandler to a LexicalHandler.</p>   *   * @param handler A non-null LexicalHandler for   *                handling lexical parse events.   */  public void setLexicalHandler(LexicalHandler handler) { }  //=========================================================================  // FragmentHandler nested class  //=========================================================================  private static class FragmentHandler extends SAXHandler {    /**     * A dummy root element required by SAXHandler that can only     * cope with well-formed documents.     */    private Element dummyRoot = new Element("root", null, null);    /**     * Public constructor.     */    public FragmentHandler(JDOMFactory factory) {      super(factory);      // Add a dummy root element to the being-built document as XSL      // transformation can output node lists instead of well-formed      // documents.      this.pushElement(dummyRoot);    }    /**     * Returns the result of an XSL Transformation.     *     * @return the transformation result as a (possibly empty) list of     *         JDOM nodes (Elements, Texts, Comments, PIs...).     */    public List getResult() {      // Flush remaining text content in case the last text segment is      // outside an element.      try {        this.flushCharacters();      }      catch (SAXException e) { /* Ignore... */  }      return this.getDetachedContent(dummyRoot);    }    /**     * Returns the content of a JDOM Element detached from it.     *     * @param  elt   the element to get the content from.     *     * @return a (possibly empty) list of JDOM nodes, detached from     *         their parent.     */    private List getDetachedContent(Element elt) {      List content = elt.getContent();      List nodes   = new ArrayList(content.size());      while (content.size() != 0)      {        Object o = content.remove(0);        nodes.add(o);      }      return (nodes);    }  }  //=========================================================================  // DocumentBuilder inner class  //=========================================================================  private class DocumentBuilder extends XMLFilterImpl                                implements LexicalHandler {    /**     * The actual JDOM document builder.     */    private FragmentHandler saxHandler = null;    /**     * Whether the startDocument event was received. Some XSLT     * processors such as Oracle's do not fire this event.     */    private boolean startDocumentReceived = false;    /**     * Public default constructor.     */    public DocumentBuilder() { }    /**     * Returns the result of an XSL Transformation.     *     * @return the transformation result as a (possibly empty) list of     *         JDOM nodes (Elements, Texts, Comments, PIs...) or     *         <code>null</code> if no new transformation occurred     *         since the result of the previous one was returned.     */    public List getResult() {      List result = null;      if (this.saxHandler != null) {        // Retrieve result from SAX content handler.        result = this.saxHandler.getResult();        // Detach the (non-reusable) SAXHandler instance.        this.saxHandler = null;        // And get ready for the next transformation.        this.startDocumentReceived = false;      }      return result;    }    private void ensureInitialization() throws SAXException {      // Trigger document initialization if XSLT processor failed to      // fire the startDocument event.      if (this.startDocumentReceived == false) {        this.startDocument();      }    }    //-----------------------------------------------------------------------    // XMLFilterImpl overwritten methods    //-----------------------------------------------------------------------    /**     * <i>[SAX ContentHandler interface support]</i> Processes a     * start of document event.     * <p>     * This implementation creates a new JDOM document builder and     * marks the current result as "under construction".</p>     *     * @throws SAXException   if any error occurred while creating     *                        the document builder.     */    public void startDocument() throws SAXException {      this.startDocumentReceived = true;      // Reset any previously set result.      setResult(null);      // Create the actual JDOM document builder and register it as      // ContentHandler on the superclass (XMLFilterImpl): this      // implementation will take care of propagating the LexicalHandler      // events.      this.saxHandler = new FragmentHandler(getFactory());      super.setContentHandler(this.saxHandler);      // And propagate event.      super.startDocument();    }    /**     * <i>[SAX ContentHandler interface support]</i> Receives     * notification of the beginning of an element.     * <p>     * This implementation ensures that startDocument() has been     * called prior processing an element.     *     * @param  nsURI       the Namespace URI, or the empty string if     *                     the element has no Namespace URI or if     *                     Namespace processing is not being performed.     * @param  localName   the local name (without prefix), or the     *                     empty string if Namespace processing is     *                     not being performed.     * @param  qName       the qualified name (with prefix), or the     *                     empty string if qualified names are not     *                     available.     * @param  atts        The attributes attached to the element.  If     *                     there are no attributes, it shall be an     *                     empty Attributes object.     *     * @throws SAXException   if any error occurred while creating     *                        the document builder.     */    public void startElement(String nsURI, String localName, String qName,                                           Attributes atts) throws SAXException    {      this.ensureInitialization();      super.startElement(nsURI, localName, qName, atts);    }    /**     * <i>[SAX ContentHandler interface support]</i> Begins the     * scope of a prefix-URI Namespace mapping.     */    public void startPrefixMapping(String prefix, String uri)                                                        throws SAXException {      this.ensureInitialization();      super.startPrefixMapping(prefix, uri);    }    /**     * <i>[SAX ContentHandler interface support]</i> Receives     * notification of character data.     */    public void characters(char ch[], int start, int length)                                                        throws SAXException {      this.ensureInitialization();      super.characters(ch, start, length);    }    /**     * <i>[SAX ContentHandler interface support]</i> Receives     * notification of ignorable whitespace in element content.     */    public void ignorableWhitespace(char ch[], int start, int length)                                                        throws SAXException {      this.ensureInitialization();      super.ignorableWhitespace(ch, start, length);    }    /**     * <i>[SAX ContentHandler interface support]</i> Receives     * notification of a processing instruction.     */    public void processingInstruction(String target, String data)                                                        throws SAXException {      this.ensureInitialization();      super.processingInstruction(target, data);    }    /**     * <i>[SAX ContentHandler interface support]</i> Receives     * notification of a skipped entity.     */    public void skippedEntity(String name) throws SAXException {      this.ensureInitialization();      super.skippedEntity(name);    }    //-----------------------------------------------------------------------    // LexicalHandler interface support    //-----------------------------------------------------------------------    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the     * start of DTD declarations, if any.     *     * @param  name       the document type name.     * @param  publicId   the declared public identifier for the     *                    external DTD subset, or <code>null</code>     *                    if none was declared.     * @param  systemId   the declared system identifier for the     *                    external DTD subset, or <code>null</code>     *                    if none was declared.     *     * @throws SAXException   The application may raise an exception.     */    public void startDTD(String name, String publicId, String systemId)                                        throws SAXException {      this.ensureInitialization();      this.saxHandler.startDTD(name, publicId, systemId);    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the end     * of DTD declarations.     *     * @throws SAXException   The application may raise an exception.     */    public void endDTD() throws SAXException {      this.saxHandler.endDTD();    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the     * beginning of some internal and external XML entities.     *     * @param  name   the name of the entity.  If it is a parameter     *                entity, the name will begin with '%', and if it     *                is the external DTD subset, it will be "[dtd]".     *     * @throws SAXException   The application may raise an exception.     */    public void startEntity(String name) throws SAXException {      this.ensureInitialization();      this.saxHandler.startEntity(name);    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the end     * of an entity.     *     * @param  name   the name of the entity that is ending.     *     * @throws SAXException   The application may raise an exception.     */    public void endEntity(String name) throws SAXException {      this.saxHandler.endEntity(name);    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the     * start of a CDATA section.     *     * @throws SAXException   The application may raise an exception.     */    public void startCDATA() throws SAXException {      this.ensureInitialization();      this.saxHandler.startCDATA();    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports the end     * of a CDATA section.     *     * @throws SAXException   The application may raise an exception.     */    public void endCDATA() throws SAXException {      this.saxHandler.endCDATA();    }    /**     * <i>[SAX LexicalHandler interface support]</i> Reports an XML     * comment anywhere in the document.     *     * @param  ch     an array holding the characters in the comment.     * @param  start  the starting position in the array.     * @param  length the number of characters to use from the array.     *     * @throws SAXException   The application may raise an exception.     */    public void comment(char ch[], int start, int length)                                  throws SAXException {      this.ensureInitialization();      this.saxHandler.comment(ch, start, length);    }  }}

⌨️ 快捷键说明

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