001: /*--
002:
003: Copyright (C) 2000 Brett McLaughlin & Jason Hunter.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The name "JDOM" must not be used to endorse or promote products
019: derived from this software without prior written permission. For
020: written permission, please contact license@jdom.org.
021:
022: 4. Products derived from this software may not be called "JDOM", nor
023: may "JDOM" appear in their name, without prior written permission
024: from the JDOM Project Management (pm@jdom.org).
025:
026: In addition, we request (but do not require) that you include in the
027: end-user documentation provided with the redistribution and/or in the
028: software itself an acknowledgement equivalent to the following:
029: "This product includes software developed by the
030: JDOM Project (http://www.jdom.org/)."
031: Alternatively, the acknowledgment may be graphical using the logos
032: available at http://www.jdom.org/images/logos.
033:
034: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
035: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
036: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
037: DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
038: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
039: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
040: LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
041: USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
042: ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
043: OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
044: OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
045: SUCH DAMAGE.
046:
047: This software consists of voluntary contributions made by many
048: individuals on behalf of the JDOM Project and was originally
049: created by Brett McLaughlin <brett@jdom.org> and
050: Jason Hunter <jhunter@jdom.org>. For more information on the
051: JDOM Project, please see <http://www.jdom.org/>.
052:
053: */
054: package sax;
055:
056: import java.io.InputStream;
057: import java.io.StringReader;
058: import java.io.StringWriter;
059:
060: import org.xml.sax.InputSource;
061: import org.xml.sax.XMLReader;
062:
063: import org.jdom.Document;
064: import org.jdom.input.SAXBuilder;
065: import org.jdom.output.XMLOutputter;
066:
067: /**
068: * Tests DocumentReader
069: *
070: * @author joe.bowbeer
071: */
072: public class ReaderTest {
073:
074: /** Creates new ReaderTest */
075: public ReaderTest() {
076: }
077:
078: /**
079: * @param args the command line arguments
080: */
081: public static void main(String args[]) throws Exception {
082:
083: /* XMLWriter for viewing SAX events. */
084:
085: XMLWriter echo = new XMLWriter();
086:
087: /* Build document from xml file. */
088:
089: SAXBuilder builder = new SAXBuilder();
090: builder.setXMLFilter(echo);
091: InputStream in = FilterTest.class
092: .getResourceAsStream("test2.xml");
093:
094: System.out
095: .println(" -- SAXBuilder(test2.xml), echo by XMLWriter -- \n");
096: Document doc = builder.build(in);
097:
098: System.out
099: .println(" -- DocumentReader(doc) output by XMLWriter --\n");
100: XMLReader parser = new DocumentReader(doc);
101: echo.setParent(parser);
102: StringWriter writer = new StringWriter();
103: parser = new XMLWriter(echo, writer);
104: parser.parse((InputSource) null);
105:
106: /* Reconstitute document from regurgitated string. */
107:
108: builder = new SAXBuilder();
109: builder.setXMLFilter(echo);
110: String xml = writer.toString();
111:
112: System.out.println(" -- xml string--\n");
113: doc = builder.build(new StringReader(xml));
114:
115: System.out
116: .println(" -- SAXBuilder(xml) output by XMLOutputter --\n");
117: XMLOutputter outputter = new XMLOutputter();
118: outputter.output(doc, System.out);
119:
120: System.out.println("\n");
121: }
122:
123: }
|