You can get rid of the xsi:type by specifying the type in the mapping file:

      <field name="items" type="entites.OrderItem"
             collection="arraylist">
        <bind-xml name="item" location="items"/>
      </field>

Or you can supress xsi:type generation by doing:

myMarshaller.setSupressXSIType(true);

--Keith


ar wrote:


Hi all,

I want to use Castor to generate XML files form my objects. One attribute
of my class has a List type.

In my resulting file I get rows like :
     <item xsi:type="java:entites.OrderItem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

I'd like
     <item>

Here is my example :

====================
Order class
====================
public class Order {
    private int id;
    private List items;

    public Commande() {}
    public Commande(int id) {this.id = id; }
    public List getItems() {return items;}
    public void setItems(List items) {this.items = items;}
}

====================
OrderItem class
====================
public class OrderItem {
    private String id;

    public LigneCommande() {super();}
    public LigneCommande(int id) {this.id = id; }
    public String getId() {return id;}
    public void setId(String string) {id = string;}
}

====================
Mapping file
====================
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
                          "http://castor.exolab.org/mapping.dtd";>
<mapping>
   <description>Mapping Order Class</description>

   <class name="entites.Order" auto-complete="yes">
     <map-to xml="order"/>
     <field name="items">
       <bind-xml name="item" location="items" />
     </field>
   </class>
</mapping>


==================== Test class ==================== public class TestXMLOrder {

    final private static String BASE_DIR = "src/castor";

    public static void main(String[] args) {
        FileWriter writer = null;
        Marshaller marshaller = null;

Order o = new Order(1);
List rows= new ArrayList();
rows.add(new OrderItem("Item1"));
rows.add(new OrderItem("Item2"));
rows.add(new OrderItem("Item3"));
o.setItems(rows);
try {
writer = new FileWriter( BASE_DIR + "/order-output.xml");
Mapping map = new Mapping();
marshaller = new Marshaller(writer);
try {
map.loadMapping("src/order.xml");
marshaller.setMapping(map);
marshaller.marshal(o);
} catch (MappingException e1) {
e1.printStackTrace();
}


        } catch (IOException e) {
            e.printStackTrace();
        } catch (MarshalException e) {
            e.printStackTrace();
        } catch (ValidationException e) {
            e.printStackTrace();
        }

    }
}

====================
Resulting file
====================
<?xml version="1.0" encoding="UTF-8"?>
<order>
     <items>
         <item xsi:type="java:entites.OrderItem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
             <id>Item1</id>
         </item>
         <item xsi:type="java:entites.OrderItem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
             <id>Item2</id>
         </item>
         <item xsi:type="java:entites.OrderItem"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
             <id>Item3</id>
         </item>
     </items>
</order>

======================
Resulting wanted file
======================
<?xml version="1.0" encoding="UTF-8"?>
<order>
     <items>
         <item>
             <id>Item1</id>
         </item>
         <item>
             <id>Item2</id>
         </item>
         <item>
             <id>Item3</id>
         </item>
     </items>
</order>

Can anybody tell me if this is possible and how to do ?

Regards




----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-user

Reply via email to