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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>

--
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
-.-.-.-.-
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
-.-.-.-.-

Reply via email to