I am new to XML parsing (from an xml file to a Java object) and I'm trying 
out Digester.
I'm having trouble figuring out how to use the digester to access the parsed 
XML once i've run the digester.parse() method.  FYI...The following examples 
are just testing code for me to learn digester so things like Exception 
handling are not fully written.

Here's a very simple xml file that I"m parsing:

        <toplevel>
                <element>
                        <field1>Value 1</field1>
                        <field2>Value 2</field2>
                </element>
        </toplevel>

        TestPropertyBean tpbean = new TestPropertyBean();

        java.io.FileInputStream fileInputStream = null;
        Digester digester = new Digester();

        //Adding data structure to digester to be parsed
        digester.push(tpbean);

        digester.setValidating(false);

        //Rules for parsing the xml file.
        digester.addObjectCreate("toplevel/element", 
"com.ibm.us.force.bean.property.TestPropertyBean");
        digester.addCallMethod("toplevel/element/field1","setField1",1);
        digester.addCallParam("toplevel/element/field1", 0);
        digester.addCallMethod("toplevel/element/field2","setField2",1);
        digester.addCallParam("toplevel/element/field2", 0);

        try {
                fileInputStream = new java.io.FileInputStream(name);
        } catch (java.io.FileNotFoundException fnfe) {
                //asdf
        }

        try {
                Object data = digester.parse(fileInputStream);
                TestPropertyBean tpbean2 = (TestPropertyBean)data;
                fileInputStream.close();
        } catch (org.xml.sax.SAXException se) {
                //asdf
                System.out.println(se.getMessage());
        } catch (java.io.IOException ie) {
                //asdf
        }

When the digester.parse() method is called, I can see the TestPropertyBean 
setters being called and the values being set to the bean instance.  My 
problem is that I don't know how to get access to that data once it's been 
parsed.  I put break points in my setters on my bean and they are being 
called so I know that the data is being parsed from the XML to the bean but 
then I can't seem to get the "populated" object to return because when I 
cast to a TestPropertyBean the values are equal to null not "value 1", 
"value 2".
I think it's a problem with the rules that I've written but I can't seem to 
figure out the correct combination.

any suggestions would be greatly appreciated.

Brad



_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com


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

Reply via email to