Hi all,

Just been playing with Digester after reading chapter 7 in LIA. Seems to fit 
my needs as I have a relatively simple XML structure. 

<xml>
        <header>
                <!-- meta data about the file here. This is not important to 
me. -->
        </header>

        <text>
                <front>
                        <!-- info here too but it's nothing I care about -->
                </front>
                <body>
                        <p>some sentences</p>
                        <p>some more sentences</p>
                </body>
        </text>
</xml>

Now, I want the text that's found between the <p> tags within the body 
section. So, I wrote a little test class using a largely bastardised version 
of DigesterXMLHandler from LIA.

I'm a tad confused to say the least. I create a Paragraph object upon seeing 
text/body. Then, call setText when I see the next <p> tag. And that's all I 
want per object, so I've added the addSetNext to call printParagraph which I 
hope prints the previous paragraph contents. But it doesn't!

My code looks so wrong but I've been hacking at it for a while with little 
fun. Any suggestions?

Thanks,
Andy

public class DigesterTest {
    
    private Digester dig;
    
    public DigesterTest(File inFile) throws IOException, SAXException {
        dig = new Digester();
        dig.setValidating(false);
              
        dig.addObjectCreate("text/body/", Paragraph.class);

        
        dig.addCallMethod("text/body/p", "setText", 0);
        
        dig.addSetNext("text/body/p", "printParagraph");
        
        System.out.println(inFile);
        dig.parse(inFile);
        
    }
    
    public void printParagraph(Paragraph p) {
            System.out.println(p.getText());
        }
    
   
    public static void main(String[] args) {
        try {
            new DigesterTest(new File(args[0]));
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }
    }
    public class Paragraph {
    
        private String text;
    
        public Paragraph() {
        }
    
        public String getText() {
            return text;
        }
    
        public void setText(String inText) {
        
            if (inText != null) {
                text = inText;
            }
        }
        
   }    

}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to