hi Holger

i think that you have one small mistake in your betwixt file. the property attribute value needs to be the name of the getter rather than the adder and so 'inners' rather than 'inner'.

the following works for me (with CVS HEAD).

<?xml version="1.0"?>
<info primitiveTypes="element">
 <element name="results">
   <element name="row" property="inners"/>
   <addDefaults/>
 </element>
</info>

- robert

On 7 Jul 2004, at 09:25, Holger D�wiger wrote:

Hi,

I'm trying to use betwixt to populate my bean from a given
XML source. The code below shows what I'm trying to
do, giving me an empty "ExampleBean".
When I change the XML-tag "row" to "inner" (in the .betwixt
resective.), everything works as I expect.

Anyway, in my real world problem the XML format is given
and I can't change.

Am I missing something?

Thanks,
Holger
-------------------------- Test.java ----------------------------
import java.io.StringReader;

import org.apache.commons.betwixt.io.BeanReader;

public class Test{

 public static void main(String argv[]) throws Exception {
   ExampleBean bean = new ExampleBean();

   String xml = "<?xml version='1.0'?>" +
     "<results>" +
     "<row><id>1</id><name>A</name></row>" +
     "<row><id>2</id><name>B</name></row>" +
     "<row><id>3</id><name>C</name></row>" +
     "</results>";
      /* This works well
   String xml = "<?xml version='1.0'?>" +
     "<results>" +
     "<inner><id>1</id><name>A</name></inner>" +
     "<inner><id>2</id><name>B</name></inner>" +
     "<inner><id>3</id><name>C</name></inner>" +
     "</results>";
   */

BeanReader reader = new BeanReader();
reader.getXMLIntrospector().setWrapCollectionsInElement(false);
reader.registerBeanClass("results", ExampleBean.class);
StringReader in = new StringReader(xml);
ExampleBean out = (ExampleBean)reader.parse(in);
System.out.println(out);
}
}
-------------------------- ExampleBean.java ----------------------------
import java.util.ArrayList;
import java.util.Collection;


public class ExampleBean{

   private Collection inners = new ArrayList();
      public ExampleBean(){};

   public Collection getInners(){
       return this.inners;
   }
   public void addInner(InnerBean i){
       inners.add(i);
   }

public String toString(){
return "[" + this.getClass().getName() + ": inners = " + inners + "]";
}


}
--------------------------- InnerBean.java --------------------------------------------
public class InnerBean{
private String id;
private String name;


   public InnerBean(){}
   public void setId(String s){
       this.id = s;
   }
   public void setName(String s){
       this.name = s;
   }

   public String getId(){
       return id;
   }
   public String getName(){
       return name;
   }

public String toString(){
return "[" + this.getClass().getName() + ": name=" + name + ", id=" + id + "]";
}


}
--------------------------- ExampleBean.betwixt ---------------------------------------------
<?xml version="1.0"?>
<info primitiveTypes="element">
<element name="results">
<element name="row" property="inner"/>
<!-- element name="inner" property="inner"/-->
<addDefaults/>
</element>
</info>



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to