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 (23 years, 5 months 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

# Content
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 }