problem using java.util.Stack with SAX

Stockett, Jeff stockett at quadralay.com
Sun May 2 22:26:05 BST 1999


Hello.  I'm relatively new to Java, so please forgive if this is a simple
question.  I'm using SAX to render a treeview table of contens from 
XML where the source content looks something like:

<?xml version='1.0' encoding='ISO-8859-1' ?>
<toc version="1.0">
  <tocitem target="booktoca_htm_641017" text="Introduction">
    <tocitem target="booktoca_htm_641019" text="What is Transmitter
Reporter?"/>
    <tocitem target="booktoca_htm_641021" text="Finding the Report You
Need"/>
    <tocitem target="booktoca_htm_641023" text="Using Help"/>
  </tocitem>
</toc>

To handle tracking what level in the tree I'm at, I thought I'd use a stack
so my
handler is as follows:

    public class TOCHandler extends HandlerBase 
    {
        private java.util.Stack stack;
        
        public void startElement(String name, AttributeList atts)
        {
            System.out.println("Start element: " + name);
            
            if (name.equals("tocitem"))
            {
              String text = atts.getValue("text");
            
              if (stack.empty())
              {
                symantec.itools.awt.TreeNode child = new
symantec.itools.awt.TreeNode(text, Contents);
                
                Contents.append(child);
                
                stack.push(child);
              }
              else
              {
                symantec.itools.awt.TreeNode child = new
symantec.itools.awt.TreeNode(text, Contents);
                
                symantec.itools.awt.TreeNode parent =
(symantec.itools.awt.TreeNode) stack.peek();
                
                stack.push(child);
                
                Contents.addChild(child, parent);        
              }
            }
        } 

        public void endElement(String name)
        {
            System.out.println("End element: " + name);
            
            if (name.equals("toc"))
              Contents.redraw();
              
            if (name.equals("tocitem"))
              stack.pop();
        }
    }

Now I get a SAXException of type null when the first check to stack.empty()
happens?
What gives?  This was all working fine before I added the stack, but I fail
to see what
I'm doing wrong.  Does it have something to do with the fact that the stack
methods
are declared synchronized?

Best Regards,


Jeff Stockett
Quadralay Corporation

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)




More information about the Xml-dev mailing list