ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/XMLPacketMaker.java
Revision: 1.1
Committed: Mon Nov 13 12:31:27 2000 UTC (24 years ago) by pjm2
Branch: MAIN
Log Message:
Test program for reading in files containing valid XML structures and
echoing the structured output on screen.

File Contents

# User Rev Content
1 pjm2 1.1 import java.io.*;
2    
3     import org.xml.sax.*;
4    
5     import javax.xml.parsers.SAXParserFactory;
6     import javax.xml.parsers.ParserConfigurationException;
7     import javax.xml.parsers.SAXParser;
8    
9    
10     public class XMLPacketMaker extends HandlerBase
11     {
12     public static void main (String argv [])
13     {
14     if (argv.length != 1) {
15     System.err.println ("Usage: cmd filename.xml");
16     System.exit (1);
17     }
18    
19     // Use the default (non-validating) parser
20     SAXParserFactory factory = SAXParserFactory.newInstance();
21     try {
22     // Set up output stream
23     out = new OutputStreamWriter (System.out, "UTF8");
24    
25     // Parse the input
26     SAXParser saxParser = factory.newSAXParser();
27     saxParser.parse( new File(argv [0]), new Echo03() );
28    
29     } catch (Throwable t) {
30     t.printStackTrace ();
31     }
32     System.exit (0);
33     }
34    
35     static private Writer out;
36     private String indentString = " "; // Amount to indent
37     private int indentLevel = 0;
38    
39    
40     //===========================================================
41     // SAX DocumentHandler methods
42     //===========================================================
43    
44     public void startDocument ()
45     throws SAXException
46     {
47     nl();
48     nl();
49     emit ("START DOCUMENT");
50     nl();
51     emit ("<?xml version='1.0' encoding='UTF-8'?>");
52     }
53    
54     public void endDocument ()
55     throws SAXException
56     {
57     nl(); emit ("END DOCUMENT");
58     try {
59     nl();
60     out.flush ();
61     } catch (IOException e) {
62     throw new SAXException ("I/O error", e);
63     }
64     }
65    
66     public void startElement (String name, AttributeList attrs)
67     throws SAXException
68     {
69     indentLevel++;
70     nl(); emit ("ELEMENT: ");
71     emit ("<"+name);
72     if (attrs != null) {
73     for (int i = 0; i < attrs.getLength (); i++) {
74     nl();
75     emit(" ATTR: ");
76     emit (attrs.getName (i));
77     emit ("\t\"");
78     emit (attrs.getValue (i));
79     emit ("\"");
80     }
81     }
82     if (attrs.getLength() > 0) nl();
83     emit (">");
84     }
85    
86     public void endElement (String name)
87     throws SAXException
88     {
89     nl();
90     emit ("END_ELM: ");
91     emit ("</"+name+">");
92     indentLevel--;
93     }
94    
95     public void characters (char buf [], int offset, int len) throws SAXException {
96     nl(); emit ("CHARS: ");
97     String s = new String(buf, offset, len);
98     if (!s.trim().equals("")) emit (s);
99     }
100    
101     //===========================================================
102     // Helpers ...
103     //===========================================================
104    
105     // Wrap I/O exceptions in SAX exceptions, to
106     // suit handler signature requirements
107     private void emit (String s) throws SAXException {
108     try {
109     out.write (s);
110     out.flush ();
111     } catch (IOException e) {
112     throw new SAXException ("I/O error", e);
113     }
114     }
115    
116     // Start a new line
117     // and indent the next line appropriately
118     private void nl () throws SAXException {
119     String lineEnd = System.getProperty("line.separator");
120     try {
121     out.write (lineEnd);
122     for (int i=0; i < indentLevel; i++) out.write(indentString);
123     } catch (IOException e) {
124     throw new SAXException ("I/O error", e);
125     }
126     }
127     }