You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Qaiser Mehmood <Qa...@revolution.com> on 2006/04/11 21:31:14 UTC
[digester] XML Parsing problem
Hi,
I am using Commons Digester to parse one XML file to a Java Object and
the code is not populating my Java Bean. The XML Files are
Rules.xml :
<?xml version="1.0"?>
<digester-rules>
<pattern value="messages/message">
<object-create-rule
classname="com.rhg.infrastructure.dao.bean.Message" />
<set-next-rule methodname="add"
paramtype="java.lang.Object"/>
<set-properties-rule />
<bean-property-setter-rule pattern="application_name"/>
<bean-property-setter-rule pattern="createDate"/>
<bean-property-setter-rule pattern="createdBy"/>
<bean-property-setter-rule pattern="id"/>
<bean-property-setter-rule pattern="index_page"/>
<bean-property-setter-rule pattern="message_text"/>
<bean-property-setter-rule pattern="priority"/>
<bean-property-setter-rule pattern="signature"/>
<bean-property-setter-rule pattern="user_id"/>
</pattern>
</digester-rules>
Test.xml :
<?xml version="1.0" ?>
<messages>
<message>
<application_name>Find Doc</application_name>
<createDate>2006-04-11 09:48:22.406</createDate>
<createdBy>1</createdBy>
<id>0</id>
<index_page>index.jsp</index_page>
<message_text>Error on Index.jsp</message_text>
<priority>5</priority>
<signature>Revolution Team</signature>
<user_id>1</user_id>
</message>
</messages>
And the code :
List messagesList = new ArrayList( );
URL rules = getClass( ).getResource("/rules.xml");
Digester digester = DigesterLoader.createDigester(rules);
digester.push(messagesList);
InputStream input = getClass( ).getResourceAsStream("/test.xml");
Object root = digester.parse(input);
message = (Message) messagesList.get(0);
System.out.println("message application name "+message);
There are elements in messageList , bu the fileds in message are null.
So Field from the 2nd XML file are not populated. Any help. I will
appreciate prompt response.
Qaiser Mehmood
Re: [digester] XML Parsing problem
Posted by Simon Kitching <sk...@apache.org>.
Hi Qaiser,
For the future, here are some recommendations:
* Do not send a "user" type email to message to both dev
and user lists. It annoys the very people you're asking
for help.
* Do not send the same email multiple times, for the
same reason.
The original authors of the "xml rules" module have long since vanished,
so help is a little hard to get for that (you'd have better luck if you
were just using the plain Digester API).
I suggest enabling logging output for digester; it is quite helpful.
See the javadoc "package summary" for the org.apache.commons.digester
package for information on enabling logging output.
http://jakarta.apache.org/commons/digester/commons-digester-1.7/docs/api/org/apache/commons/digester/package-summary.html
Regards,
Simon
On Tue, 2006-04-11 at 15:31 -0400, Qaiser Mehmood wrote:
> I am using Commons Digester to parse one XML file to a Java Object and
> the code is not populating my Java Bean. The XML Files are
>
>
>
> Rules.xml :
>
>
>
> <?xml version="1.0"?>
>
>
>
> <digester-rules>
>
>
>
> <pattern value="messages/message">
>
> <object-create-rule
> classname="com.rhg.infrastructure.dao.bean.Message" />
>
> <set-next-rule methodname="add"
> paramtype="java.lang.Object"/>
>
> <set-properties-rule />
>
> <bean-property-setter-rule pattern="application_name"/>
>
> <bean-property-setter-rule pattern="createDate"/>
>
> <bean-property-setter-rule pattern="createdBy"/>
>
> <bean-property-setter-rule pattern="id"/>
>
> <bean-property-setter-rule pattern="index_page"/>
>
> <bean-property-setter-rule pattern="message_text"/>
>
> <bean-property-setter-rule pattern="priority"/>
>
> <bean-property-setter-rule pattern="signature"/>
>
> <bean-property-setter-rule pattern="user_id"/>
>
>
>
> </pattern>
>
> </digester-rules>
>
>
>
> Test.xml :
>
>
>
> <?xml version="1.0" ?>
>
> <messages>
>
> <message>
>
> <application_name>Find Doc</application_name>
>
> <createDate>2006-04-11 09:48:22.406</createDate>
>
> <createdBy>1</createdBy>
>
> <id>0</id>
>
> <index_page>index.jsp</index_page>
>
> <message_text>Error on Index.jsp</message_text>
>
> <priority>5</priority>
>
> <signature>Revolution Team</signature>
>
> <user_id>1</user_id>
>
> </message>
>
> </messages>
>
>
>
> And the code :
>
>
>
> List messagesList = new ArrayList( );
>
> URL rules = getClass( ).getResource("/rules.xml");
>
> Digester digester = DigesterLoader.createDigester(rules);
>
> digester.push(messagesList);
>
> InputStream input = getClass( ).getResourceAsStream("/test.xml");
>
> Object root = digester.parse(input);
>
> message = (Message) messagesList.get(0);
>
>
>
> System.out.println("message application name "+message);
>
>
>
> There are elements in messageList , bu the fileds in message are null.
> So Field from the 2nd XML file are not populated. Any help. I will
> appreciate prompt response.
>
>
>
> Qaiser Mehmood
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org