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