Improve XML parsing to handle attributes as well.
[cfb.git] / prod / net / jaekl / cfb / xml / SourceLine.java
index 627667a161ac4e3902c6170412e5f32badf2c6b8..c719529e2d9231c1a396253174571c932767ca0b 100644 (file)
@@ -1,5 +1,8 @@
 package net.jaekl.cfb.xml;
 
+import java.io.PrintWriter;
+
+import net.jaekl.qd.xml.MissingAttributeException;
 import net.jaekl.qd.xml.ParseResult;
 import net.jaekl.qd.xml.XmlParseException;
 
@@ -26,24 +29,38 @@ public class SourceLine extends ParseResult {
        }       
        
        @Override
-       public void endContents(String uri, String localName, String qName,     String chars, Attributes attr) 
-               throws XmlParseException 
-       {
+       public void handleMainAttributes(Attributes attr) throws MissingAttributeException {
                String scratch;
                
-               m_className = getRequiredAttr(localName, attr, ATTR_CLASS_NAME);
+               m_className = getRequiredAttr(TAG, attr, ATTR_CLASS_NAME);
                
-               scratch = getRequiredAttr(localName, attr, ATTR_START);
+               scratch = getRequiredAttr(TAG, attr, ATTR_START);
                m_start = Integer.parseInt(scratch);
                
-               scratch = getRequiredAttr(localName, attr, ATTR_END);
+               scratch = getRequiredAttr(TAG, attr, ATTR_END);
                m_end = Integer.parseInt(scratch);
        }
        
+       @Override
+       public void endContents(String uri, String localName, String qName,     String chars) 
+               throws XmlParseException 
+       {
+               // no-op
+       }
+       
        @Override
        public void endExternal(String uri, String localName, String qName)
                throws XmlParseException 
        {
                // no-op
        }
+       
+       @Override
+       public void dump(PrintWriter pw, int indent) 
+       {
+               super.dump(pw, indent);
+               String tab = String.format("%" + (indent + 2) + "s", "");
+               
+               pw.println(tab + m_className + " (" + m_start + " .. " + m_end + ")");
+       }
 }