2010-06-09 24 views
4

Comment puis-je modifier le mappage CastorComment modifier le mappage de Castor pour supprimer les attributs "xmlns: xsi" et "xsi: type" de l'élément dans la sortie XML?

<?xml version="1.0"?> 
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" 
         "http://castor.org/mapping.dtd"> 

<mapping> 
    <class name="java.util.ArrayList" auto-complete="true"> 
     <map-to xml="ArrayList" /> 
    </class> 
    <class name="com.db.spgit.abstrack.ws.response.UserResponse"> 
     <map-to xml="UserResponse" /> 
     <field name="id" type="java.lang.String"> 
      <bind-xml name="id" node="element" /> 
     </field> 
     <field name="deleted" type="boolean"> 
      <bind-xml name="deleted" node="element" /> 
     </field> 
     <field name="name" type="java.lang.String"> 
      <bind-xml name="name" node="element" /> 
     </field> 
     <field name="typeId" type="java.lang.Integer"> 
      <bind-xml name="typeId" node="element" /> 
     </field> 
     <field name="regionId" type="java.lang.Integer"> 
      <bind-xml name="regionId" node="element" /> 
     </field> 
     <field name="regionName" type="java.lang.String"> 
      <bind-xml name="regionName" node="element" /> 
     </field> 
    </class> 
</mapping> 

pour supprimer les attributs xmlns:xsi et xsi:type dans l'élément de la sortie XML? Par exemple, au lieu de la sortie XML

<?xml version="1.0" encoding="UTF-8"?> 
<ArrayList> 
    <UserResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="UserResponse"> 
     <name>Tester</name> 
     <typeId>1</typeId> 
     <regionId>2</regionId> 
     <regionName>US</regionName> 
    </UserResponse> 
</ArrayList> 

Je préfère

<?xml version="1.0" encoding="UTF-8"?> 
<ArrayList> 
    <UserResponse> 
     <name>Tester</name> 
     <typeId>1</typeId> 
     <regionId>2</regionId> 
     <regionName>US</regionName> 
    </UserResponse> 
</ArrayList> 

tels que le nom de l'élément implique la xsi:type.

Répondre

6

Définissez la propriété Castor Marshaller suppressXSIType false:

Marshaller marshaller = new Marshaller(w); 
marshaller.setSuppressXSIType(true); 

Voir Configuring the Marshaller dans le Castor 1.3.1 Reference Documentation. (Notez que Tableau 1.10 Propriétés placier liste uniquement de propriété suppressNamespaces, mais les méthodes setSuppressNamespaces() et setSuppressXSIType() existent à la fois dans la classe Marshaller.)