ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/XMLPacketMaker.java
Revision: 1.4
Committed: Tue Nov 14 09:48:06 2000 UTC (23 years, 5 months ago) by pjm2
Branch: MAIN
Changes since 1.3: +1 -0 lines
Log Message:
Created the XMLPacket class.  This uses a hash map to store and access
values by key strings.

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 // For storing the tag heirarchy.
39 private ArrayList tagList = new ArrayList();
40
41 //===========================================================
42 // SAX DocumentHandler methods
43 //===========================================================
44
45 public void startDocument () throws SAXException {
46 nl();
47 nl();
48 emit ("START DOCUMENT");
49 nl();
50 emit ("<?xml version='1.0' encoding='UTF-8'?>");
51 }
52
53 public void endDocument () throws SAXException {
54 nl(); emit ("END DOCUMENT");
55 try {
56 nl();
57 out.flush ();
58 } catch (IOException e) {
59 throw new SAXException ("I/O error", e);
60 }
61 }
62
63 public void startElement (String name, AttributeList attrs) throws SAXException {
64 indentLevel++;
65 nl(); emit ("ELEMENT: ");
66 emit ("<"+name);
67 if (attrs != null) {
68 for (int i = 0; i < attrs.getLength (); i++) {
69 nl();
70 emit(" ATTR: ");
71 emit (attrs.getName (i));
72 emit ("\t\"");
73 emit (attrs.getValue (i));
74 emit ("\"");
75 }
76 }
77 if (attrs.getLength() > 0) nl();
78 emit (">");
79 }
80
81 public void endElement (String name) throws SAXException {
82 nl();
83 emit ("END_ELM: ");
84 emit ("</"+name+">");
85 indentLevel--;
86 }
87
88 public void characters (char[] buf, int offset, int len) throws SAXException {
89 nl(); emit ("CHARS: ");
90 String s = new String(buf, offset, len);
91 if (!s.trim().equals("")) emit (s);
92 }
93
94 //===========================================================
95 // Helpers ...
96 //===========================================================
97
98 // Wrap I/O exceptions in SAX exceptions, to
99 // suit handler signature requirements
100 private void emit (String s) throws SAXException {
101 try {
102 out.write (s);
103 out.flush ();
104 } catch (IOException e) {
105 throw new SAXException ("I/O error", e);
106 }
107 }
108
109 // Start a new line
110 // and indent the next line appropriately
111 private void nl () throws SAXException {
112 String lineEnd = System.getProperty("line.separator");
113 try {
114 out.write (lineEnd);
115 for (int i=0; i < indentLevel; i++) out.write(indentString);
116 } catch (IOException e) {
117 throw new SAXException ("I/O error", e);
118 }
119 }
120 }