ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/XMLStringParser.java
(Generate patch)

Comparing projects/cms/source/util/uk/org/iscream/cms/util/XMLStringParser.java (file contents):
Revision 1.3 by tdb, Wed Nov 29 19:11:53 2000 UTC vs.
Revision 1.8 by tdb, Sat Mar 10 00:49:39 2001 UTC

# Line 1 | Line 1
1   //---PACKAGE DECLARATION---
2 < package uk.ac.ukc.iscream.xml;
2 > package uk.ac.ukc.iscream.util;
3  
4   //---IMPORTS---
5   import java.io.*;
6   import java.util.ArrayList;
7  
8   import org.xml.sax.*;
9 + import org.xml.sax.helpers.*;
10   import javax.xml.parsers.SAXParserFactory;
11   import javax.xml.parsers.ParserConfigurationException;
12   import javax.xml.parsers.SAXParser;
# Line 16 | Line 17 | import javax.xml.parsers.SAXParser;
17   * @author  $Author$
18   * @version $Id$
19   */
20 < public class XMLStringParser extends HandlerBase {
20 > public class XMLStringParser extends DefaultHandler {
21  
22   //---FINAL ATTRIBUTES---
23  
# Line 29 | Line 30 | public class XMLStringParser extends HandlerBase {
30  
31   //---CONSTRUCTORS---
32  
33 <    // No-args constructor.  Generally not used.
33 >    /**
34 >     * No-args constructor.  Generally not used.
35 >     */
36      public XMLStringParser () {
37          this.packet = new XMLPacket();
38      }
39  
40 <    // Constructor for accepting a reference to an XMLPacket
40 >    /**
41 >     * Constructor for accepting a reference to an XMLPacket
42 >     */
43      public XMLStringParser (XMLPacket packet) {
44          this.packet = packet;
45      }
46  
47   //---PUBLIC METHODS---
48  
49 <    // Accessor to the XMLPacket.
49 >    /**
50 >     * Accessor to the XMLPacket.
51 >     */
52      public XMLPacket getXMLPacket() {
53          return packet;
54      }
# Line 58 | Line 65 | public class XMLStringParser extends HandlerBase {
65          //System.out.println("XMLPacketParser - I just finished parsing an XML String.");
66      }
67  
68 <    // Add each tag's attribute to the XMLPacket.
69 <    // Note that all attributes within an opening tag are
70 <    // stored as "someroot.sometag.attributes.attribute_name"
71 <    // E.g. If <packet> is the root node, then:
72 <    //     <packet machine_name="raptor">
73 <    // is stored as:
74 <    //     "packet.attributes.machine_name"
75 <    // within the XMLPacket.
76 <    public void startElement (String name, AttributeList attrs) throws SAXException {
68 >    /** Add each tag's attribute to the XMLPacket.
69 >     * Note that all attributes within an opening tag are
70 >     * stored as "someroot.sometag.attributes.attribute_name"
71 >     * E.g. If <packet> is the root node, then:
72 >     *     <packet machine_name="raptor">
73 >     * is stored as:
74 >     *     "packet.attributes.machine_name"
75 >     * within the XMLPacket.
76 >     */
77 >    public void startElement (String name, Attributes attrs) throws SAXException {
78          indentLevel++;
79          tagList.add(name);
80          if (attrs != null) {
81              for (int i = 0; i < attrs.getLength (); i++) {
82 <                packet.addParam(getPath()+".attributes."+attrs.getName(i), attrs.getValue(i));
82 >                packet.addParam(getPath()+".attributes."+attrs.getLocalName(i), attrs.getValue(i));
83              }
84          }
85      }
86  
87 <    // When an XML element is finished with, we must remove
88 <    // the tag name from the tagList and decrement the indent
89 <    // level.
87 >    /**
88 >     * When an XML element is finished with, we must remove
89 >     * the tag name from the tagList and decrement the indent
90 >     * level.
91 >     */
92      public void endElement (String name) throws SAXException {
93          tagList.remove(tagList.size()-1);    
94          indentLevel--;
95      }
96  
97 <    // Any text falling within a pair of terminal tags must
98 <    // be added to the XMLPacket.  Trim leading and trailing
99 <    // spaces and do not bother to add if there is no data
100 <    // specified within the tags.
97 >    /**
98 >     * Any text falling within a pair of terminal tags must
99 >     * be added to the XMLPacket.  Trim leading and trailing
100 >     * spaces and do not bother to add if there is no data
101 >     * specified within the tags.
102 >     */
103      public void characters (char[] buf, int offset, int len) throws SAXException {
104          String s = new String(buf, offset, len);
105 <        if (!s.trim().equals("")) {
94 <            packet.addParam(getPath(), s);
95 <        }
105 >        packet.addParam(getPath(), s);
106      }
107  
108      /**
109       * Overrides the {@link java.lang.Object#toString() Object.toString()}
110       * method to provide clean logging (every class should have this).
111       *
112 +     * This uses the uk.ac.ukc.iscream.util.NameFormat class
113 +     * to format the toString()
114 +     *
115       * @return the name of this class and its CVS revision
116       */
117      public String toString() {
118 <        return this.getClass().getName() + "(" + REVISION.substring(11, REVISION.length() - 2) + ")";
118 >        return FormatName.getName(
119 >            _name,
120 >            getClass().getName(),
121 >            REVISION);
122      }
123  
124   //---PRIVATE METHODS---
# Line 111 | Line 127 | public class XMLStringParser extends HandlerBase {
127      // Helpers ...
128      //===========================================================
129      
130 <    
131 <    // Return the heirarchical string to be used as a key value
132 <    // in the XMLPacket.
130 >    /**
131 >     * Return the heirarchical string to be used as a key value
132 >     * in the XMLPacket.
133 >     */
134      private String getPath () {
135          String path = (String)tagList.get(0);
136          if (tagList.size() > 0) {
# Line 128 | Line 145 | public class XMLStringParser extends HandlerBase {
145  
146   //---ATTRIBUTES---
147  
148 +    /**
149 +     * To keep track of our identation level
150 +     */
151      private int indentLevel = 0;
152 +    
153 +    /**
154 +     * An ArrayList of tags
155 +     */
156      private ArrayList tagList = new ArrayList();
157 +    
158 +    /**
159 +     * A reference to the XMLPacket we are making
160 +     */
161      private XMLPacket packet;
162 +    
163 +    /**
164 +     * This is the friendly identifier of the
165 +     * component this class is running in.
166 +     * eg, a Filter may be called "filter1",
167 +     * If this class does not have an owning
168 +     * component,  a name from the configuration
169 +     * can be placed here.  This name could also
170 +     * be changed to null for utility classes.
171 +     */
172 +    private String _name = null;
173  
174   //---STATIC ATTRIBUTES---
175  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines