亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xmlwriter.java

?? 利用jdom解析實現xml的讀取或從數據庫中導出數據通過jdom得出xml
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/*-- 

 Copyright (C) 2000 Brett McLaughlin & Jason Hunter.
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
 are met:
 
 1. Redistributions of source code must retain the above copyright
    notice, this list of conditions, and the following disclaimer.
 
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions, and the disclaimer that follows 
    these conditions in the documentation and/or other materials 
    provided with the distribution.

 3. The name "JDOM" must not be used to endorse or promote products
    derived from this software without prior written permission.  For
    written permission, please contact license@jdom.org.
 
 4. Products derived from this software may not be called "JDOM", nor
    may "JDOM" appear in their name, without prior written permission
    from the JDOM Project Management (pm@jdom.org).
 
 In addition, we request (but do not require) that you include in the 
 end-user documentation provided with the redistribution and/or in the 
 software itself an acknowledgement equivalent to the following:
     "This product includes software developed by the
      JDOM Project (http://www.jdom.org/)."
 Alternatively, the acknowledgment may be graphical using the logos 
 available at http://www.jdom.org/images/logos.

 THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED.  IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 SUCH DAMAGE.

 This software consists of voluntary contributions made by many 
 individuals on behalf of the JDOM Project and was originally 
 created by Brett McLaughlin <brett@jdom.org> and 
 Jason Hunter <jhunter@jdom.org>.  For more information on the 
 JDOM Project, please see <http://www.jdom.org/>.
 
 */
package sax;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.NamespaceSupport;


/**
 * Filter to write an XML document from a SAX event stream.
 *
 * <i>Code and comments adapted from XMLWriter-0.2, written
 * by David Megginson and released into the public domain,
 * without warranty.</i>
 *
 * <p>This class can be used by itself or as part of a SAX event
 * stream: it takes as input a series of SAX2 ContentHandler
 * events and uses the information in those events to write
 * an XML document.  Since this class is a filter, it can also
 * pass the events on down a filter chain for further processing
 * (you can use the XMLWriter to take a snapshot of the current
 * state at any point in a filter chain), and it can be
 * used directly as a ContentHandler for a SAX2 XMLReader.</p>
 *
 * <p>The client creates a document by invoking the methods for
 * standard SAX2 events, always beginning with the
 * {@link #startDocument startDocument} method and ending with
 * the {@link #endDocument endDocument} method.</p>
 *
 * <p>The following code will send a simple XML document to
 * standard output:</p>
 *
 * <pre>
 * XMLWriter w = new XMLWriter();
 *
 * w.startDocument();
 * w.dataElement("greeting", "Hello, world!");
 * w.endDocument();
 * </pre>
 *
 * <p>The resulting document will look like this:</p>
 *
 * <pre>
 * &lt;?xml version="1.0"?>
 *
 * &lt;greeting>Hello, world!&lt;/greeting>
 * </pre>
 *
 * <h2>Whitespace</h2>
 *
 * <p>According to the XML Recommendation, <em>all</em> whitespace
 * in an XML document is potentially significant to an application,
 * so this class never adds newlines or indentation.  If you
 * insert three elements in a row, as in</p>
 *
 * <pre>
 * w.dataElement("item", "1");
 * w.dataElement("item", "2");
 * w.dataElement("item", "3");
 * </pre>
 *
 * <p>you will end up with</p>
 *
 * <pre>
 * &lt;item>1&lt;/item>&lt;item>3&lt;/item>&lt;item>3&lt;/item>
 * </pre>
 *
 * <p>You need to invoke one of the <var>characters</var> methods
 * explicitly to add newlines or indentation.  Alternatively, you
 * can use {@link samples.sax.DataFormatFilter DataFormatFilter}
 * add linebreaks and indentation (but does not support mixed content
 * properly).</p>
 *
 *
 * <h2>Namespace Support</h2>
 *
 * <p>The writer contains extensive support for XML Namespaces, so that
 * a client application does not have to keep track of prefixes and
 * supply <var>xmlns</var> attributes.  By default, the XML writer will
 * generate Namespace declarations in the form _NS1, _NS2, etc., wherever
 * they are needed, as in the following example:</p>
 *
 * <pre>
 * w.startDocument();
 * w.emptyElement("http://www.foo.com/ns/", "foo");
 * w.endDocument();
 * </pre>
 *
 * <p>The resulting document will look like this:</p>
 *
 * <pre>
 * &lt;?xml version="1.0"?>
 *
 * &lt;_NS1:foo xmlns:_NS1="http://www.foo.com/ns/"/>
 * </pre>
 *
 * <p>In many cases, document authors will prefer to choose their
 * own prefixes rather than using the (ugly) default names.  The
 * XML writer allows two methods for selecting prefixes:</p>
 *
 * <ol>
 * <li>the qualified name</li>
 * <li>the {@link #setPrefix setPrefix} method.</li>
 * </ol>
 *
 * <p>Whenever the XML writer finds a new Namespace URI, it checks
 * to see if a qualified (prefixed) name is also available; if so
 * it attempts to use the name's prefix (as long as the prefix is
 * not already in use for another Namespace URI).</p>
 *
 * <p>Before writing a document, the client can also pre-map a prefix
 * to a Namespace URI with the setPrefix method:</p>
 *
 * <pre>
 * w.setPrefix("http://www.foo.com/ns/", "foo");
 * w.startDocument();
 * w.emptyElement("http://www.foo.com/ns/", "foo");
 * w.endDocument();
 * </pre>
 *
 * <p>The resulting document will look like this:</p>
 *
 * <pre>
 * &lt;?xml version="1.0"?>
 *
 * &lt;foo:foo xmlns:foo="http://www.foo.com/ns/"/>
 * </pre>
 *
 * <p>The default Namespace simply uses an empty string as the prefix:</p>
 *
 * <pre>
 * w.setPrefix("http://www.foo.com/ns/", "");
 * w.startDocument();
 * w.emptyElement("http://www.foo.com/ns/", "foo");
 * w.endDocument();
 * </pre>
 *
 * <p>The resulting document will look like this:</p>
 *
 * <pre>
 * &lt;?xml version="1.0"?>
 *
 * &lt;foo xmlns="http://www.foo.com/ns/"/>
 * </pre>
 *
 * <p>By default, the XML writer will not declare a Namespace until
 * it is actually used.  Sometimes, this approach will create
 * a large number of Namespace declarations, as in the following
 * example:</p>
 *
 * <pre>
 * &lt;xml version="1.0"?>
 *
 * &lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 *  &lt;rdf:Description about="http://www.foo.com/ids/books/12345">
 *   &lt;dc:title xmlns:dc="http://www.purl.org/dc/">A Dark Night&lt;/dc:title>
 *   &lt;dc:creator xmlns:dc="http://www.purl.org/dc/">Jane Smith&lt;/dc:title>
 *   &lt;dc:date xmlns:dc="http://www.purl.org/dc/">2000-09-09&lt;/dc:title>
 *  &lt;/rdf:Description>
 * &lt;/rdf:RDF>
 * </pre>
 *
 * <p>The "rdf" prefix is declared only once, because the RDF Namespace
 * is used by the root element and can be inherited by all of its
 * descendants; the "dc" prefix, on the other hand, is declared three
 * times, because no higher element uses the Namespace.  To solve this
 * problem, you can instruct the XML writer to predeclare Namespaces
 * on the root element even if they are not used there:</p>
 *
 * <pre>
 * w.forceNSDecl("http://www.purl.org/dc/");
 * </pre>
 *
 * <p>Now, the "dc" prefix will be declared on the root element even
 * though it's not needed there, and can be inherited by its
 * descendants:</p>
 *
 * <pre>
 * &lt;xml version="1.0"?>
 *
 * &lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 *             xmlns:dc="http://www.purl.org/dc/">
 *  &lt;rdf:Description about="http://www.foo.com/ids/books/12345">
 *   &lt;dc:title>A Dark Night&lt;/dc:title>
 *   &lt;dc:creator>Jane Smith&lt;/dc:title>
 *   &lt;dc:date>2000-09-09&lt;/dc:title>
 *  &lt;/rdf:Description>
 * &lt;/rdf:RDF>
 * </pre>
 *
 * <p>This approach is also useful for declaring Namespace prefixes
 * that be used by qualified names appearing in attribute values or
 * character data.</p>
 *
 * @see XMLFilterBase
 */
public class XMLWriter extends XMLFilterBase
{


    ////////////////////////////////////////////////////////////////////
    // Constructors.
    ////////////////////////////////////////////////////////////////////


    /**
     * Create a new XML writer.
     *
     * <p>Write to standard output.</p>
     */
    public XMLWriter()
    {
        init(null);
    }


    /**
     * Create a new XML writer.
     *
     * <p>Write to the writer provided.</p>
     *
     * @param writer The output destination, or null to use standard
     *        output.
     */
    public XMLWriter(Writer writer)
    {
        init(writer);
    }


    /**
     * Create a new XML writer.
     *
     * <p>Use the specified XML reader as the parent.</p>
     *
     * @param xmlreader The parent in the filter chain, or null
     *        for no parent.
     */
    public XMLWriter(XMLReader xmlreader)
    {
        super(xmlreader);
        init(null);
    }


    /**
     * Create a new XML writer.
     *
     * <p>Use the specified XML reader as the parent, and write
     * to the specified writer.</p>
     *
     * @param xmlreader The parent in the filter chain, or null
     *        for no parent.
     * @param writer The output destination, or null to use standard
     *        output.
     */
    public XMLWriter(XMLReader xmlreader, Writer writer)
    {
        super(xmlreader);
        init(writer);
    }


    /**
     * Internal initialization method.
     *
     * <p>All of the public constructors invoke this method.
     *
     * @param writer The output destination, or null to use
     *        standard output.
     */
    private void init (Writer writer)
    {
        setOutput(writer);
        nsSupport = new NamespaceSupport();
        prefixTable = new HashMap();
        forcedDeclTable = new HashMap();
        doneDeclTable = new HashMap();
    }



    ////////////////////////////////////////////////////////////////////
    // Public methods.
    ////////////////////////////////////////////////////////////////////


    /**
     * Reset the writer.
     *
     * <p>This method is especially useful if the writer throws an
     * exception before it is finished, and you want to reuse the
     * writer for a new document.  It is usually a good idea to
     * invoke {@link #flush flush} before resetting the writer,
     * to make sure that no output is lost.</p>
     *
     * <p>This method is invoked automatically by the
     * {@link #startDocument startDocument} method before writing
     * a new document.</p>
     *
     * <p><strong>Note:</strong> this method will <em>not</em>
     * clear the prefix or URI information in the writer or
     * the selected output writer.</p>
     *
     * @see #flush
     */
    public void reset ()
    {
        openElement = false;
        elementLevel = 0;
        prefixCounter = 0;
        nsSupport.reset();
        inDTD = false;
    }


    /**
     * Flush the output.
     *
     * <p>This method flushes the output stream.  It is especially useful
     * when you need to make certain that the entire document has
     * been written to output but do not want to close the output
     * stream.</p>
     *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一级生活| 99re热这里只有精品免费视频| 成人一区二区在线观看| 欧美男同性恋视频网站| 中文一区在线播放| 久久国内精品视频| 在线观看av一区| 国产精品国产三级国产专播品爱网| 日本欧美大码aⅴ在线播放| 色悠悠久久综合| 国产女主播在线一区二区| 免费在线观看日韩欧美| 在线这里只有精品| 亚洲国产电影在线观看| 国内外成人在线视频| 欧美日韩美少妇| 亚洲精品v日韩精品| 亚洲精品一区二区三区福利| 亚洲最新在线观看| 97精品国产露脸对白| 国产欧美日韩不卡| 美女爽到高潮91| 在线播放日韩导航| 亚洲一区二区欧美日韩 | 亚洲精品一区二区三区四区高清| 亚洲国产aⅴ天堂久久| 91丝袜美腿高跟国产极品老师| 国产偷v国产偷v亚洲高清| 精品无码三级在线观看视频 | 国产一区二区三区蝌蚪| 日韩一区二区三区精品视频| 午夜av一区二区三区| 欧美色图天堂网| 一级做a爱片久久| 色老汉av一区二区三区| 亚洲欧洲日韩在线| av影院午夜一区| 国产精品电影一区二区| 9色porny自拍视频一区二区| 中文字幕av不卡| 成人午夜在线播放| 国产欧美日韩中文久久| 懂色av一区二区夜夜嗨| 中文欧美字幕免费| 成人免费高清视频| 中文字幕一区二区不卡| 99精品黄色片免费大全| 亚洲猫色日本管| 91成人国产精品| 午夜精品123| 日韩一区二区三区四区五区六区| 蜜臀av一区二区在线观看| 日韩视频一区二区在线观看| 老司机精品视频线观看86| 精品国产91乱码一区二区三区| 激情深爱一区二区| 中文字幕精品一区二区精品绿巨人| 成人av网站大全| 一区二区三区丝袜| 欧美久久久久久久久中文字幕| 免费成人结看片| 久久久91精品国产一区二区精品 | 国产中文字幕一区| 久久精品视频在线免费观看| 粉嫩绯色av一区二区在线观看 | 777久久久精品| 麻豆精品久久久| 国产免费观看久久| 一本色道a无线码一区v| 天天亚洲美女在线视频| 欧美成人精品1314www| 丁香五精品蜜臀久久久久99网站| 1000部国产精品成人观看| 欧美特级限制片免费在线观看| 日韩精品电影在线| 国产婷婷一区二区| 色域天天综合网| 蜜桃视频一区二区三区在线观看| 国产日韩欧美电影| 一本高清dvd不卡在线观看| 亚洲国产美国国产综合一区二区| 欧美电视剧在线观看完整版| 大美女一区二区三区| 亚洲一区二区三区四区在线 | 亚洲美女免费视频| 欧美日韩高清一区二区三区| 国产综合色在线视频区| 中文字幕一区二区不卡| 这里只有精品视频在线观看| 国产精品1024| 一区二区三区欧美视频| 欧美videossexotv100| 成人18精品视频| 日韩精品免费视频人成| 日本一区二区综合亚洲| 欧美日韩一区不卡| 国产精品一线二线三线精华| 亚洲一区二区四区蜜桃| 2024国产精品视频| 在线观看91视频| 国产精品996| 亚洲123区在线观看| 国产清纯在线一区二区www| 欧美日韩在线直播| 国产成人免费视频网站高清观看视频 | 在线看一区二区| 国产一区视频导航| 亚洲高清不卡在线观看| 久久久www免费人成精品| 欧美性受极品xxxx喷水| 国产成人激情av| 三级欧美在线一区| 亚洲欧洲日韩一区二区三区| 日韩女优制服丝袜电影| 欧美中文字幕一区二区三区亚洲| 极品少妇一区二区三区精品视频| 亚洲综合精品自拍| 亚洲国产精品传媒在线观看| 在线播放国产精品二区一二区四区| 成人18精品视频| 国产精品综合一区二区三区| 婷婷久久综合九色综合绿巨人| 综合婷婷亚洲小说| 久久久99免费| 欧美成人性战久久| 欧美日韩精品一区二区三区四区| 99在线精品免费| 国产精品一品视频| 麻豆精品蜜桃视频网站| 午夜久久久影院| 亚洲综合在线免费观看| 中文字幕第一区二区| 欧美精品一区二区久久久| 制服丝袜中文字幕亚洲| 欧美伊人久久久久久久久影院| 成人91在线观看| 丁香婷婷综合色啪| 久久综合狠狠综合| 欧美一区二区美女| 欧美日本一道本| 欧美在线观看一区| 色婷婷av一区| 97超碰欧美中文字幕| gogo大胆日本视频一区| 国产**成人网毛片九色| 国产乱码精品一区二区三区忘忧草 | 日韩电影免费在线看| 亚洲国产一区二区三区| 玉米视频成人免费看| 国产精品久久久久久亚洲伦| 中文字幕 久热精品 视频在线| 久久久99精品免费观看| 2023国产一二三区日本精品2022| 日韩精品一区二区三区在线播放| 91麻豆精品国产| 欧美一区二区在线免费观看| 69成人精品免费视频| 7777精品伊人久久久大香线蕉的 | 91视频一区二区| 91香蕉视频在线| 91理论电影在线观看| 色婷婷综合五月| 欧美艳星brazzers| 欧洲国内综合视频| 欧美在线免费视屏| 欧美日韩在线播放| 欧美精品乱码久久久久久按摩| 欧美裸体bbwbbwbbw| 9191久久久久久久久久久| 91精品国产综合久久久久久久| 91精品综合久久久久久| 日韩欧美第一区| 久久精品亚洲精品国产欧美kt∨| 国产日韩欧美精品综合| 中文字幕一区二区三中文字幕| 综合婷婷亚洲小说| 亚洲一区二区偷拍精品| 日韩黄色一级片| 极品少妇xxxx精品少妇| 顶级嫩模精品视频在线看| 91免费视频网| 欧美伦理电影网| 精品99999| 中文字幕在线一区二区三区| 一区二区三区久久久| 日本美女视频一区二区| 国产一区欧美二区| voyeur盗摄精品| 欧美三级视频在线| 日韩美女主播在线视频一区二区三区| 久久久精品天堂| 亚洲免费观看高清完整版在线观看熊| 亚洲国产成人av好男人在线观看| 蜜臀av性久久久久av蜜臀妖精| 国产激情91久久精品导航 | 国产精品12区| 色婷婷香蕉在线一区二区| 91麻豆精品国产综合久久久久久| 久久综合久久综合九色| 亚洲欧美一区二区三区久本道91|