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

# User Rev Content
1 pjm2 1.3 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 pjm2 1.4 // For storing the tag heirarchy.
39 pjm2 1.3 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     }