Return-Path: Delivered-To: apmail-jakarta-struts-dev-archive@jakarta.apache.org Received: (qmail 1169 invoked by uid 500); 5 Oct 2001 14:57:04 -0000 Mailing-List: contact struts-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk Reply-To: struts-dev@jakarta.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list struts-dev@jakarta.apache.org Received: (qmail 1154 invoked from network); 5 Oct 2001 14:57:04 -0000 Received: from unknown (HELO pop.invertix.com) (209.225.31.118) by daedalus.apache.org with SMTP; 5 Oct 2001 14:57:04 -0000 Received: from PYOUNG [209.225.31.120] by pop.invertix.com (SMTPD32-7.03) id AA42D61F0252; Fri, 05 Oct 2001 10:57:06 -0400 From: "Paula Young" To: "Struts-Dev" Subject: Digester help needed ! Date: Fri, 5 Oct 2001 10:52:23 -0400 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_005D_01C14D8B.D07A3F70" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-MS-TNEF-Correlator: X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N This is a multi-part message in MIME format. ------=_NextPart_000_005D_01C14D8B.D07A3F70 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit [ fyi - I posted this problem on soap-user yesterday, but think it's more geared toward soap-dev, so I apologize if some of you see it twice! ] I've been prototyping some XML parsing logic, trying out the Apache Digester utility, org.apache.struts.digester, and it isn't quite working as expected. My objective in using the digester is to parse the XML string that comes back from the SDK and create a javabean from this data, so that the JSP can use some nice taglibs to build the page from the bean. I documented my findings (because it's hard to remember all this stuff when you're comparing different ways of doing something!) And here's my findings: if the XML format is (as most, if not all, of my XML strings are!) : 18 Your smallcorp site login has expired!! And my bean is : public class ErrResp implements Serializable { private int errnum = 0; private String errdesc = null; // -- integer code for the error public int getErrnum() { return errnum; } public void setErrnum(int errnum) { this.errnum = errnum; } // -- description of error public String getErrdesc() { return errdesc; } public void setErrdesc(String errdesc) { this.errdesc = new String(errdesc); } // -- Utils public String toString() { StringBuffer sb = new StringBuffer("ErrResp is:\n"); sb.append("Errnum=" + errnum + ".\n"); sb.append("Errdesc=" + errdesc + ".\n"); return sb.toString(); } } // ---------- END BEAN ------------------ ... I could not parse it as digester.addObjectCreate("loginerr", "com.wrox.pjsp2.struts.common.ErrResp"); digester.addSetProperties("loginerr"); digester.addSetNext("loginerr", "gotErr", "com.wrox.pjsp2.struts.common.ErrResp"); ... I could only parse it as: digester.addObjectCreate("loginerr", "com.wrox.pjsp2.struts.common.ErrResp"); digester.addCallMethod("loginerr/errnum", "setErrnum", 0); digester.addCallMethod("loginerr/errdesc", "setErrdesc", 0); digester.addSetNext("loginerr", "gotErr", "com.wrox.pjsp2.struts.common.ErrResp"); -IF,and only if- I added the following method to the bean (since it looks like addCallMethod doesn't do any 'reflection' on the bean, it calls the method specified with a String class value always) : public void setErrnum(String errnum) { this.errnum = Integer.parseInt(errnum); } Had the XML been formatted like: ...then the following code would have worked: digester.addObjectCreate("loginerr", "com.wrox.pjsp2.struts.common.ErrResp"); digester.addSetProperties("loginerr"); digester.addSetNext("loginerr", "gotErr", "com.wrox.pjsp2.struts.common.ErrResp"); (and the special public void setErrnum(String errnum) method is not needed in the bean, the digester uses bean reflection correctly in this case and the string is converted to integer automatically behind the scene). Does anyone know why I can't use the addSetProperties way of parsing the XML string: 18 Your smallcorp site login has expired!! ? Aren't both XML formats valid? I really want to use addSetProperties on this XML format so that I don't have to map each "xml element-to-bean method" one-for-one, and so that the type conversions are automatic. That would be ideal. Thanks, Paula Young ------=_NextPart_000_005D_01C14D8B.D07A3F70 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="winmail.dat" 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 dp93ows6rtAvea2F/00B+TTyGIlDUjC8gleASZH/UjJhANSv1b/Wz9ff6t/r7//s/9wf3S/HP8hP yV8Wv+hP/+lfGZ8arxu/HM9Hv0WRbWD/UKFNAvszggAAnwGvArLytf86kW4yeWBhAGEBdvH5WFT7 /zvBWAFaYvf4V7FysFMR8OL/+TI6kfogvTErR/xUM8KXoP9JkCCAPrOIt2IwXkBs8UwQP2RRfEJo 4StlXZB5YCkue+4/a4dE9iH3IpegTZBr/24wosBlQPdQvEH3MFE4XOL/TQIf3meiQtJLZlaMFc4L u/9y33PvdP8PX3cfeC9BVji/uypcSWU/TTBnYVE4YvjQ//wAbIj8857gSwBgUVmRN1L/Z7CD4V5B XOJJ2h/egEtuy/8zhWyJSdpbpmBiO+kVE15Bb0TQRUBJ2lpgY/wASdqTcUnaeG1sUK9Wl4FELd1e QC3zk/K0SdqUgEs60fotiZEtOtFJ2m3g8IJUJvkIonR5sUA1VfPwl6BxQ/U2qC4m4FRUYhS085Bs AN+ykIIAOK9reGJRbvSwJea+UDawfqAOwqnQfvQwSRsEfQBoIAAACwABgAggBgAAAAAAwAAAAAAA AEYAAAAAA4UAAAAAAAADAAOACCAGAAAAAADAAAAAAAAARgAAAAAQhQAAAAAAAAMAB4AIIAYAAAAA AMAAAAAAAABGAAAAAFKFAAB9bgEAHgAJgAggBgAAAAAAwAAAAAAAAEYAAAAAVIUAAAEAAAAEAAAA OS4wAAsADYAIIAYAAAAAAMAAAAAAAABGAAAAAIKFAAABAAAACwA6gAggBgAAAAAAwAAAAAAAAEYA AAAADoUAAAAAAAADADyACCAGAAAAAADAAAAAAAAARgAAAAARhQAAAAAAAAMAPYAIIAYAAAAAAMAA AAAAAABGAAAAABiFAAAAAAAACwBSgAggBgAAAAAAwAAAAAAAAEYAAAAABoUAAAAAAAADAFOACCAG AAAAAADAAAAAAAAARgAAAAABhQAAAAAAAAIB+A8BAAAAEAAAAK+Rfe+0i6BBsFH1dHwLC8kCAfoP AQAAABAAAACvkX3vtIugQbBR9XR8CwvJAgH7DwEAAACYAAAAAAAAADihuxAF5RAaobsIACsqVsIA AFBTVFBSWC5ETEwAAAAAAAAAAE5JVEH5v7gBAKoAN9luAAAAQzpcRG9jdW1lbnRzIGFuZCBTZXR0 aW5nc1xweW91bmdcTG9jYWwgU2V0dGluZ3NcQXBwbGljYXRpb24gRGF0YVxNaWNyb3NvZnRcT3V0 bG9va1xvdXRsb29rLnBzdAADAP4PBQAAAAMADTT9NwAAAgF/AAEAAAAzAAAAPEtBRUJMQUZCRktP RkFCT0VMUEVDRUVERkNEQUEucHlvdW5nQGludmVydGl4LmNvbT4AAAMABhDQjly8AwAHELkKAAAD ABAQAQAAAAMAERAAAAAAHgAIEAEAAABlAAAARllJLUlQT1NURURUSElTUFJPQkxFTU9OU09BUC1V U0VSWUVTVEVSREFZLEJVVFRISU5LSVRTTU9SRUdFQVJFRFRPV0FSRFNPQVAtREVWLFNPSUFQT0xP R0laRUlGU09NRU9GWQAAAADPXw== ------=_NextPart_000_005D_01C14D8B.D07A3F70--