Given this code:
------------------------------------------------------------------------
/package testbetwixt;
import java.beans.IntrospectionException;
import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedList;
import java.util.ListIterator;
import org.apache.commons.betwixt.io.BeanWriter;
import org.xml.sax.SAXException;
public class Class1 {
private String field1;
private String field2;
private LinkedList things;
public Class1() {
this.field1 = "";
this.field2 = "";
this.things = new LinkedList();
}
public String getField1() { return this.field1;}
public void setField1(String field1) { this.field1 = field1;}
public String getField2() { return field2; }
public void setField2(String field2) { this.field2 = field2; }
public void addThing(Thing thing) { things.add(thing); }
public ListIterator getThingIterator() { return things.listIterator(); }
public String toXML() throws IOException, IntrospectionException,
SAXException {
StringWriter outputWriter = new StringWriter();
outputWriter.write("<?xml version='1.0'
encoding=\"ISO-8859-1\"?>\n");
BeanWriter beanWriter = new BeanWriter(outputWriter);
beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(true);
beanWriter.getXMLIntrospector().getConfiguration().setWrapCollectionsInElement(false);
beanWriter.getBindingConfiguration().setMapIDs(false);
beanWriter.enablePrettyPrint();
beanWriter.write("first-element", this);
String ret = outputWriter.toString();
outputWriter.close();
return ret;
}
}/
------------------------------------------------------------------------
/package testbetwixt;
public class Thing {
private String field3;
public Thing() {
this.field3 = "";
}
public String getfield3() { return field3; }
public void setfield3(String field3) { this.field3 = field3; }
}/
------------------------------------------------------------------------
And the following class that makes some beans and pass it to XML:
/package testbetwixt;
public class Parser {
public static final void main(String [] args) {
Class1 c = new Class1();
c.setField1("1");
c.setField2("2");
Thing t1 = new Thing();
t1.setfield3("3");
Thing t2 = new Thing();
t2.setfield3("4");
c.addThing(t1);
c.addThing(t2);
try {
System.out.println(c.toXML());
} catch(Throwable t) {
t.printStackTrace();
}
}
}/
------------------------------------------------------------------------
I´m using these .betwixt files:
For Class1:
/<?xml version='1.0' encoding='UTF-8' ?>
<info primitiveTypes='attribute'>
<element name='first-element'>
<attribute name="foo" property="field1"/>
<attribute name="bar" property="field2"/>
<addDefaults/>
</element>
</info>/
and this one is for Thing:
/<?xml version='1.0' encoding='UTF-8' ?>
<info primitiveTypes='attribute'>
*<element name='second-element'>*
<attribute name="inside-thing" property="field3"/>
</element>
</info>/
The problem I´m having is that I get this XML:
/<?xml version='1.0' encoding="ISO-8859-1"?>
<first-element foo="1" bar="2">
<thing inside-thing="3"/>
<thing inside-thing="4"/>
</first-element>/
but my desired ouput is:
/<?xml version='1.0' encoding="ISO-8859-1"?>
<first-element foo="1" bar="2">
<*second-element* inside-thing="3"/>
<*second-element *inside-thing="4"/>
</first-element>/
where is my fault?