commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paolo Viappiani" <paolo.viappi...@epfl.ch>
Subject Re: [VFS] Someone HELP!!!! please
Date Tue, 13 Mar 2007 14:38:48 GMT
The setter rules should have been the following:

digester.addBeanPropertySetter("people/person/name", "name");
digester.addBeanPropertySetter("people/person/age", "age");

Paolo

On 3/7/07, herbison <herbison@nortel.com> wrote:
>
>
> Thank you, this seems to work.
>
> I'm still interested in finding out why the digester is not working.
>
>
> Niall Gallagher-3 wrote:
> >
> > Hi,
> >
> > You should use something simple, for instance try Simple from
> > http://simple.sourceforge.net. The following could be done cleaner and
> > faster, with no obscure problems and no casting required.
> >
> > public class SampleDigester {
> >
> >    public static void main(String[] args) throws Exception {
> >       Persister persister = new Persister();
> >       People people = persister.read(People.class, new
> > File("person.xml"));
> >
> >       for (int i = 0; i < people.size(); i++)
> >       {
> >         Person p = people.get(i);
> >         System.out.println(p.getName() + "=" + p.getAge());
> >       }
> >    }
> > }
> >
> > @Root(name="people")
> > public class People {
> >
> >     @ElementList(name="list", type=Person.class)
> >     private Dictionary<Person> list;
> >
> >     public Person get(int index) {
> >         return list.get(index);
> >     }
> >
> >     public int size() {
> >         return list.size();
> >     }
> > }
> >
> > @Root(name="person")
> > public Person {
> >
> >     @Element(name="name")
> >     private String name;
> >
> >     @Element(name="age")
> >     private int age
> >
> >     public String getName() {
> >         return name;
> >     }
> >
> >     public int getAge() {
> >         return age;
> >     }
> > }
> >
> >
> > <people>
> >    <list>
> >       <person>
> >         <name>Tom Higgins</name>
> >         <age>25</age>
> >       </person>
> >       <person>
> >         <name>Barney Smith</name>
> >         <age>75</age>
> >       </person>
> >       <person>
> >         <name>Susan Shields</name>
> >         <age>53</age>
> >       </person>
> >    </list>
> > </people>
> >
> > Niall
> >
> > herbison wrote:
> >> This has got to be simple!
> >> When I run the code below the parse sees each instance of person but
> >> nothing
> >> is read from the xml file, why?
> >> Here is the output:
> >> SETAGE:0
> >> SETNAME:
> >> SETAGE:0
> >> SETNAME:
> >> SETAGE:0
> >> SETNAME:
> >> =0
> >> =0
> >> =0
> >>
> >>
> >> here is my main routine:
> >> public class SampleDigester
> >> {
> >>      public static void main(String [] args) throws Exception
> >>      {
> >>              List people = new ArrayList();
> >>
> >>              // Configure Digester from XML ruleset
> >>              Digester digester = new Digester();
> >>              digester.addObjectCreate("people/person", Person.class);
> >>              digester.addSetNext("people/person", "add" ,"Person");
> >>              digester.addBeanPropertySetter("people/person", "name");
> >>              digester.addBeanPropertySetter("people/person", "age");
> >>
> >>              // Push empty List onto Digester's Stack
> >>              digester.push( people );
> >>
> >>              // Parse the XML document
> >>              InputStream input = new FileInputStream( "person.xml" );
> >>              digester.parse( input );
> >>
> >>              for (int i=0;i<people.size();i++)
> >>              {
> >>                      Person p = (Person)people.get(i);
> >>                      System.out.println(p.getName()+"="+p.getAge());
> >>              }
> >>      }
> >> }
> >> Here is my bean:
> >> import java.io.Serializable;
> >>
> >> public class Person implements Serializable
> >> {
> >>      private String id;
> >>      private String name;
> >>      private int age;
> >>
> >>      public Person() {}
> >>
> >>      public String getId() { return id; }
> >>      public void setId(String v) {
> >>              System.out.println("SETID:"+v);
> >>              id = v;
> >>      }
> >>
> >>      public String getName() { return name; }
> >>      public void setName(String v) {
> >>              System.out.println("SETNAME:"+v);
> >>              name = v;
> >>      }
> >>
> >>      public int getAge() { return age; }
> >>      public void setAge(int v) {
> >>              System.out.println("SETAGE:"+v);
> >>              age = v;
> >>      }
> >>
> >> }
> >> Here is my xml:
> >>
> >> <people>
> >>   <person>
> >>     <name>Tom Higgins</name>
> >>     <age>25</age>
> >>   </person>
> >>   <person>
> >>     <name>Barney Smith</name>
> >>     <age>75</age>
> >>   </person>
> >>   <person>
> >>     <name>Susan Shields</name>
> >>     <age>53</age>
> >>   </person>
> >> </people>
> >>
> >>
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Digester%2C-someone-HELP%21%21%21%21--please-tf3362618.html#a9359609
> Sent from the Commons - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
>


-- 
-.-.-.-.-
Paolo Viappiani
Artificial Intelligence Laboratory (LIA)
EPFL, Ecole Polytechnique Federale Lausanne
Bat. INR - Station 14
CH-1015 LAUSANNE
http://people.epfl.ch/paolo.viappiani
tel: +41 21 693.66.79 (lab)
tel: +41 21 693.67.11 (office)
fax: +41 21 693.52.25
-.-.-.-.-

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message