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]



Reply via email to