First, I'm new to Betwixt, but by no means new to the Digester. I've
used the Digester successfully for several projects.
I'm having a problem. I cannot figure out how to have my existing xml
be read/written properly (without a betwixt file), when my XML root
element already contains an attribute @id and also has (what Betwixt
classifies as a 'primitive') an element <name>, which is a String. For
example:
<customer id="111">
<name>XYZ LLC</name>
</customer>
Tester:
BeanReader reader = new BeanReader();
XMLIntrospector x = new XMLIntrospector();
x.setElementNameMapper(new DecapitalizeNameMapper());
x.setAttributesForPrimitives(false);
reader.setXMLIntrospector(x);
reader.registerBeanClass( Customer.class );
The problem lies in the x.setAttributesForPrimitives(true);. This works
for @id, but not for <name>, or vice versa when set to false when
Customer.java is:
public class Customer{
private String id;
private String name;
.
}
I know I can do the following and make it work, but this is somewhat
bothersome since I have to do this for every entity with an id:
<?xml version="1.0" encoding="UTF-8"?>
<info primitiveTypes="element">
<element name="customer">
<attribute name="id" property="id"/>
<addDefaults/>
</element>
</info>
How can I get both @id and <name> to be read/written properly
programmatically, exactly as the source file shows? It would be easier
for me to specify an AttributeDescriptor generically, instead of
providing a betwixt file for all of them.
Am I missing something here?
Thanks,
Kevin Ross