On Thursday, July 31, 2003, at 09:34 PM, Arjun Ram wrote:

Hi,

Im trying to load a simple XML file. Here is a sample

<?xml version="1.0"?>
<importtask>
        <database>
                <driver>com.sybase.jdbc2.jdbc.SybDriver</driver>
                <url>jdbc:sybase:Tds:169.69.273.203:10587</url>
                <username>sdssdbo</username>
                <password>sdssdbo</password>
        </database>
        <importsource>
                <tablename>SVHCL</tablename>
        </importsource>
        <importsource>
                <tablename>SVHCL</tablename>
        </importsource>
</importtask>

corresponding code:

digester = new Digester();
digester.addObjectCreate("importtask",
"com.dx.ops.mv.InsertDB");
digester.addCallMethod(
                        "importtask/database/driver",
                                        "setDriver",
                                        0);

digester.addCallMethod("importtask/database/url", "setUrl", 0);
digester.addCallMethod(
                        "importtask/database/username",
                                        "setUsername",
                                        0);
digester.addCallMethod(
                "importtask/database/password",
                                        "setPasswd",
                                        0);

digester.addSetNext("importtask/importsource", "addimporttask");

digester.addObjectCreate(
                        "importtask/importsource/",
"com.dx.ops.mv.ImportSourceBean");

                                digester.addSetProperties("importtask/importsource");
digester.addBeanPropertySetter(
                        "importtask/importsource/tablename",
                        "tablename");
digester.parse("config.xml");

But addBeanPropertySetter for tablename seems to pick up InsertDB class not the ImportSourceBean. Am I making a simple mistake some place?

the tricky thing with digester is that the order of the rules is important.


i think that one problem you have is that the SetNextRule executes before the ObjectCreateRule when 'importtask/importsource' is matched. i think that the SetNextRule should be placed after the ObjectCreateRule.

another problem that i think you might have is with

digester.addObjectCreate("importtask/importsource/")

i suspect (but haven't had the chance to prove right now) that this will fail to match. try changing to

digester.addObjectCreate("importtask/importsource")

hope this helps

P.S: its sad to see not many samples for digester

it certainly is :)


if you find this email useful then you'd consider spending a few minutes creating and contributing a documentation patch with one (or better still more than one) simple sample in.

- robert


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



Reply via email to