ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/server/XMLReader/XMLPacketMaker.java
(Generate patch)

Comparing experimental/server/XMLReader/XMLPacketMaker.java (file contents):
Revision 1.7 by pjm2, Tue Nov 14 12:01:19 2000 UTC vs.
Revision 1.8 by pjm2, Tue Nov 14 12:23:17 2000 UTC

# Line 40 | Line 40 | public class XMLPacketMaker extends HandlerBase {
40              SAXParser saxParser = factory.newSAXParser();
41              saxParser.parse(new File(args[0]), new XMLPacketMaker(packet));
42  
43 <            // By means of example, print out some things from the packet: -
44 <            System.out.println("bung.wibble="+packet.getParam("bung.wibble"));
45 <            System.out.println("bung.ping.value1="+packet.getParam("bung.ping.value1"));            
46 <
47 <            // Print out the entire contents of the packet.
43 >            // Print out the entire contents of the packet's HashMap.
44 >            System.out.println("XMLPacket contents: -");
45              packet.printAll();
46  
47          } catch (Throwable t) {
# Line 66 | Line 63 | public class XMLPacketMaker extends HandlerBase {
63      //===========================================================
64  
65      public void startDocument () throws SAXException {
66 <        nl();
70 <        nl();
71 <        emit ("START DOCUMENT");
72 <        nl();
73 <        emit ("<?xml version='1.0' encoding='UTF-8'?>");
66 >        // No purpose currently.
67      }
68  
69      public void endDocument () throws SAXException {
70 <        nl(); emit ("END DOCUMENT");
78 <        try {
79 <            nl();
80 <            out.flush ();
81 <        } catch (IOException e) {
82 <            throw new SAXException ("I/O error", e);
83 <        }
70 >        // No purpose currently.
71      }
72  
73 +    // Add each tag's attribute to the XMLPacket.
74 +    // Note that all attributes within an opening tag are
75 +    // stored as "someroot.sometag.attributes.attribute_name"
76 +    // E.g. If <packet> is the root node, then:
77 +    //     <packet machine_name="raptor">
78 +    // is stored as:
79 +    //     "packet.attributes.machine_name"
80 +    // within the XMLPacket.
81      public void startElement (String name, AttributeList attrs) throws SAXException {
82          indentLevel++;
83          tagList.add(name);
89        nl(); emit ("ELEMENT: ");
90        emit ("<"+name);
84          if (attrs != null) {
85              for (int i = 0; i < attrs.getLength (); i++) {
86 <                nl();
94 <                emit("   ATTR: ");
95 <                emit (attrs.getName (i));
96 <                emit ("\t\"");
97 <                emit (attrs.getValue (i));
98 <                emit ("\"");
86 >                packet.addParam(getPath()+".attributes."+attrs.getName(i), attrs.getValue(i));
87              }
88          }
101        if (attrs.getLength() > 0) nl();
102        emit (">");
89      }
90  
91 +    // When an XML element is finished with, we must remove
92 +    // the tag name from the tagList and decrement the indent
93 +    // level.
94      public void endElement (String name) throws SAXException {
106        nl();
107        emit ("END_ELM: ");
108        emit ("</"+name+">");
95          tagList.remove(tagList.size()-1);    
96          indentLevel--;
97      }
98  
99 +    // Any text falling within a pair of terminal tags must
100 +    // be added to the XMLPacket.  Trim leading and trailing
101 +    // spaces and do not bother to add if there is no data
102 +    // specified within the tags.
103      public void characters (char[] buf, int offset, int len) throws SAXException {
114        nl(); emit ("CHARS:   ");
104          String s = new String(buf, offset, len);
105          if (!s.trim().equals("")) {
117            emit (s);
106              packet.addParam(getPath(), s);
107          }
108      }
109  
110 +
111      //===========================================================
112      // Helpers ...
113      //===========================================================
125
126    // Wrap I/O exceptions in SAX exceptions, to
127    // suit handler signature requirements
128    private void emit (String s) throws SAXException {
129        try {
130            out.write (s);
131            out.flush ();
132        } catch (IOException e) {
133            throw new SAXException ("I/O error", e);
134        }
135    }
136
137    // Start a new line
138    // and indent the next line appropriately
139    private void nl () throws SAXException {
140        String lineEnd =  System.getProperty("line.separator");
141        try {
142            out.write (lineEnd);
143            for (int i=0; i < indentLevel; i++) out.write(indentString);
144        } catch (IOException e) {
145            throw new SAXException ("I/O error", e);
146        }
147    }
114      
115 +    
116      // Return the heirarchical string to be used as a key value
117      // in the XMLPacket.
118      private String getPath () {
# Line 157 | Line 124 | public class XMLPacketMaker extends HandlerBase {
124          }
125          return path;
126      }
127 +    
128   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines