ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/XMLPacketMaker.java
Revision: 1.3
Committed: Tue Nov 14 09:32:31 2000 UTC (24 years ago) by pjm2
Branch: MAIN
Changes since 1.2: +119 -127 lines
Log Message:
Oops, the wrong file was uploaded ;-)
This entry now reflects the previous change.

File Contents

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