You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "Shvets, Steve" <St...@ubs.com> on 2003/06/18 22:11:14 UTC
[Digester] Please help....
Hi,
I need to take following xml
<order>
<account>12345</account>
<symbol>IBM</symbol>
</order>
and create a java.util.HashMap with
key value
"account" 12345
"symbol" IBM
How would the rules look like...Can someone provide a sample....
Thank you, Steve
Please do not transmit orders or instructions regarding a UBS account by
email. The information provided in this email or any attachments is not an
official transaction confirmation or account statement. For your protection,
do not include account numbers, Social Security numbers, credit card
numbers, passwords or other non-public information in your email. Because
the information contained in this message may be privileged, confidential,
proprietary or otherwise protected from disclosure, please notify us
immediately by replying to this message and deleting it from your computer
if you have received this communication in error. Thank you.
UBS Financial Services Inc.
UBS International Inc.
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org
Re: [Digester] Please help....
Posted by Joe Germuska <Jo...@Germuska.com>.
This is pretty hard to do with Digester's default rules because they
don't really give you access to element names themselves -- just
element and attribute content. If you could put your XML through an
XSLT transform before digesting to get something more like
<order>
<entry key="account" value="12345" />
<entry key="symbol" value="IBM" />
</order>
it would be a piece of cake. It would be about as easy if you had
the values inside elements
<order>
<entry>
<key>account</key>
<value>12345</value>
...
</order>
For the first:
digester.addObjectCreate("order", java.util.HashMap.class);
digester.addCallMethod("order/entry","put", 2);
digester.addCallParam("order/entry",0, "key");
digester.addCallParam("order/entry",1, "value");
For the second:
digester.addObjectCreate("order", java.util.HashMap.class);
digester.addCallMethod("order/entry","put", 2);
digester.addCallParam("order/entry/key",0);
digester.addCallParam("order/entry/value", 1);
This assumes that you are treating the account number as a string,
not an integer. Using this approach,it would be hard to support
different types for map entry values.
Do you have this flexibility? Otherwise, you'll have to write your
own subclass of org.apache.commons.digester.Rule, overriding the
method:
public void body(String namespace, String name, Attributes attributes).
I'm pretty sure there aren't any included Rule subclasses that do
what you're thinking of.
I'm sure I should be using the XML rules syntax, but I still think in
terms of the java method digester configuration...
Joe
At 16:11 -0400 6/18/03, Shvets, Steve wrote:
>Hi,
>
>I need to take following xml
><order>
> <account>12345</account>
> <symbol>IBM</symbol>
></order>
>
>and create a java.util.HashMap with
>
>key value
>"account" 12345
>"symbol" IBM
>
>How would the rules look like...Can someone provide a sample....
>
>Thank you, Steve
>
>
>Please do not transmit orders or instructions regarding a UBS account by
>email. The information provided in this email or any attachments is not an
>official transaction confirmation or account statement. For your protection,
>do not include account numbers, Social Security numbers, credit card
>numbers, passwords or other non-public information in your email. Because
>the information contained in this message may be privileged, confidential,
>proprietary or otherwise protected from disclosure, please notify us
>immediately by replying to this message and deleting it from your computer
>if you have received this communication in error. Thank you.
>
>UBS Financial Services Inc.
>UBS International Inc.
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: commons-dev-help@jakarta.apache.org
--
--
Joe Germuska
Joe@Germuska.com
http://blog.germuska.com
"If nature worked that way, the universe would crash all the time."
--Jaron Lanier
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org