You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by Franck Silvestre <f....@fylab.com> on 2005/02/14 18:11:57 UTC

customizing XML output

I'm completely new to ibatis .
I play with the ability to get XML output.

If I use in my sql map file a resultMap with the attribute class set as 
"xml" I get a String for each item of  the result list.
Is it possible to customize the root element name of  fetched items ?
The default root element name is "result". I tried to use the 
"xmlResultName" of the "select" element but it did nothing.

Second question : is there a way to customize the structure of the xml 
output (for exemple tell  a fetched value to be an attribute of  an 
element) ?

Thanks in advance
Franck



Re: customizing XML output

Posted by Franck Silvestre <f....@fylab.com>.
Clinton,

OK, I just checked the DTD : the attribute in "resultMap" is "xmlName"  
and not "xmlResultName".

Thank you for your answers,
Franck

Le 14 févr. 05, à 18:30, Clinton Begin a écrit :

> If you're using an Result Map, the xmlResultName has to go on the
> <resultMap> element.
>
> Clinton
>
>
> On Mon, 14 Feb 2005 18:25:15 +0100, Franck Silvestre
> <f....@fylab.com> wrote:
>> Here is the sql map file
>>
>> ------------
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
>> "http://www.ibatis.com/dtd/sql-map-2.dtd">
>> <sqlMap>
>>      <!-- <resultMap id="getActorsByNameResultMap"
>> class="org.fydji.wsrm.examples.Actor"> -->
>>      <resultMap id="getActorsByNameResultMap" class="xml">
>>          <result property="id" column="ID"  
>> javaType="java.lang.Integer"/>
>>          <result property="email" column="EMAIL"
>> javaType="java.lang.String"/>
>>          <result property="firstName" column="FIRST_NAME"
>> javaType="java.lang.String"/>
>>          <result property="name" column="NAME"
>> javaType="java.lang.String"/>
>>          <result property="organization" column="ORGANIZATION"
>> javaType="java.lang.String"/>
>>      </resultMap>
>>      <select id="getActorsByName" parameterClass="java.util.Map"
>> resultMap="getActorsByNameResultMap" xmlResultName="Actor">
>>          select
>>              ID,
>>              EMAIL,
>>              FIRST_NAME,
>>              NAME,
>>              ORGANIZATION
>>          from
>>              FY_ACTOR
>>          where
>>              NAME like #name#
>>      </select>
>> </sqlMap>
>> --------------
>>
>> Here is the obained output :
>>
>> --------------
>> DEBUG [main] - Created connection 5068254.
>> DEBUG [main] - {conn-100000} Connection
>> DEBUG [main] - {pstm-100001} PreparedStatement:          select
>>       ID,             EMAIL,             FIRST_NAME,             NAME,
>>            ORGANIZATION         from              FY_ACTOR          
>> where
>>              NAME like ?
>> DEBUG [main] - {pstm-100001} Parameters: [Si%]
>> DEBUG [main] - {pstm-100001} Types: [java.lang.String]
>> DEBUG [main] - {rset-100002} ResultSet
>> DEBUG [main] - {rset-100002} Header: [ID, EMAIL, FIRST_NAME, NAME,
>> ORGANIZATION]
>> DEBUG [main] - {rset-100002} Result: [1, f.silvestre@fylab.com,  
>> Franck,
>> Silvestre, Fylab]
>> DEBUG [main] - {rset-100002} Result: [5, s.sigur@fylab.com, StÈphane,
>> Sigur, Sigur.net]
>> <?xml version="1.0" encoding="UTF-8"?>
>> <result><id>1</id><email>f.silvestre@fylab.com</
>> email><firstName>Franck</firstName><name>Silvestre</
>> name><organization>Fylab</organization></result>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <result><id>5</id><email>s.sigur@fylab.com</ 
>> email><firstName>StÈphane</
>> firstName><name>Sigur</name><organization>Sigur.net</organization></
>> result>
>> DEBUG [main] - Returned connection 5068254 to pool.
>>
>> --------------
>>
>> Thanks in advance,
>> Franck
>>
>> Le 14 févr. 05, à 18:20, Clinton Begin a écrit :
>>
>>> There's no way to customize the XML output.  You'll just need to use
>>> either XSLT or some other means of transformation.  The xmlResultName
>>> should work though.  Can you post an example of what you're doing?
>>>
>>> Clinton
>>>
>>>
>>> On Mon, 14 Feb 2005 18:11:57 +0100, Franck Silvestre
>>> <f....@fylab.com> wrote:
>>>> I'm completely new to ibatis .
>>>> I play with the ability to get XML output.
>>>>
>>>> If I use in my sql map file a resultMap with the attribute class set
>>>> as
>>>> "xml" I get a String for each item of  the result list.
>>>> Is it possible to customize the root element name of  fetched items  
>>>> ?
>>>> The default root element name is "result". I tried to use the
>>>> "xmlResultName" of the "select" element but it did nothing.
>>>>
>>>> Second question : is there a way to customize the structure of the  
>>>> xml
>>>> output (for exemple tell  a fetched value to be an attribute of  an
>>>> element) ?
>>>>
>>>> Thanks in advance
>>>> Franck
>>>>
>>>>
>>>
>>>
>> ----------------------------------
>> Franck SILVESTRE
>> Directeur technique
>> FYLAB
>> 55, av Louis-Bréguet,
>> Bâtiment 7 - 1er étage
>> 31400 Toulouse
>> Tel :           +33 5 62 47 00 39
>> Mobil :         +33 6 14 65 23 76
>> Fax :           +33 5 62 47 00 36
>> http://www.fylab.com
>> http://www.fytraining.com
>>
>>
>
>
----------------------------------
Franck SILVESTRE
Directeur technique
FYLAB
55, av Louis-Bréguet,
Bâtiment 7 - 1er étage
31400 Toulouse
Tel : 		+33 5 62 47 00 39
Mobil : 	+33 6 14 65 23 76
Fax :		+33 5 62 47 00 36
http://www.fylab.com
http://www.fytraining.com



Re: customizing XML output

Posted by Clinton Begin <cl...@gmail.com>.
If you're using an Result Map, the xmlResultName has to go on the
<resultMap> element.

Clinton


On Mon, 14 Feb 2005 18:25:15 +0100, Franck Silvestre
<f....@fylab.com> wrote:
> Here is the sql map file
> 
> ------------
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
> "http://www.ibatis.com/dtd/sql-map-2.dtd">
> <sqlMap>
>      <!-- <resultMap id="getActorsByNameResultMap"
> class="org.fydji.wsrm.examples.Actor"> -->
>      <resultMap id="getActorsByNameResultMap" class="xml">
>          <result property="id" column="ID" javaType="java.lang.Integer"/>
>          <result property="email" column="EMAIL"
> javaType="java.lang.String"/>
>          <result property="firstName" column="FIRST_NAME"
> javaType="java.lang.String"/>
>          <result property="name" column="NAME"
> javaType="java.lang.String"/>
>          <result property="organization" column="ORGANIZATION"
> javaType="java.lang.String"/>
>      </resultMap>
>      <select id="getActorsByName" parameterClass="java.util.Map"
> resultMap="getActorsByNameResultMap" xmlResultName="Actor">
>          select
>              ID,
>              EMAIL,
>              FIRST_NAME,
>              NAME,
>              ORGANIZATION
>          from
>              FY_ACTOR
>          where
>              NAME like #name#
>      </select>
> </sqlMap>
> --------------
> 
> Here is the obained output :
> 
> --------------
> DEBUG [main] - Created connection 5068254.
> DEBUG [main] - {conn-100000} Connection
> DEBUG [main] - {pstm-100001} PreparedStatement:          select
>       ID,             EMAIL,             FIRST_NAME,             NAME,
>            ORGANIZATION         from              FY_ACTOR         where
>              NAME like ?
> DEBUG [main] - {pstm-100001} Parameters: [Si%]
> DEBUG [main] - {pstm-100001} Types: [java.lang.String]
> DEBUG [main] - {rset-100002} ResultSet
> DEBUG [main] - {rset-100002} Header: [ID, EMAIL, FIRST_NAME, NAME,
> ORGANIZATION]
> DEBUG [main] - {rset-100002} Result: [1, f.silvestre@fylab.com, Franck,
> Silvestre, Fylab]
> DEBUG [main] - {rset-100002} Result: [5, s.sigur@fylab.com, StÈphane,
> Sigur, Sigur.net]
> <?xml version="1.0" encoding="UTF-8"?>
> <result><id>1</id><email>f.silvestre@fylab.com</
> email><firstName>Franck</firstName><name>Silvestre</
> name><organization>Fylab</organization></result>
> <?xml version="1.0" encoding="UTF-8"?>
> <result><id>5</id><email>s.sigur@fylab.com</email><firstName>StÈphane</
> firstName><name>Sigur</name><organization>Sigur.net</organization></
> result>
> DEBUG [main] - Returned connection 5068254 to pool.
> 
> --------------
> 
> Thanks in advance,
> Franck
> 
> Le 14 févr. 05, à 18:20, Clinton Begin a écrit :
> 
> > There's no way to customize the XML output.  You'll just need to use
> > either XSLT or some other means of transformation.  The xmlResultName
> > should work though.  Can you post an example of what you're doing?
> >
> > Clinton
> >
> >
> > On Mon, 14 Feb 2005 18:11:57 +0100, Franck Silvestre
> > <f....@fylab.com> wrote:
> >> I'm completely new to ibatis .
> >> I play with the ability to get XML output.
> >>
> >> If I use in my sql map file a resultMap with the attribute class set
> >> as
> >> "xml" I get a String for each item of  the result list.
> >> Is it possible to customize the root element name of  fetched items ?
> >> The default root element name is "result". I tried to use the
> >> "xmlResultName" of the "select" element but it did nothing.
> >>
> >> Second question : is there a way to customize the structure of the xml
> >> output (for exemple tell  a fetched value to be an attribute of  an
> >> element) ?
> >>
> >> Thanks in advance
> >> Franck
> >>
> >>
> >
> >
> ----------------------------------
> Franck SILVESTRE
> Directeur technique
> FYLAB
> 55, av Louis-Bréguet,
> Bâtiment 7 - 1er étage
> 31400 Toulouse
> Tel :           +33 5 62 47 00 39
> Mobil :         +33 6 14 65 23 76
> Fax :           +33 5 62 47 00 36
> http://www.fylab.com
> http://www.fytraining.com
> 
>

Re: customizing XML output

Posted by Franck Silvestre <f....@fylab.com>.
Here is the sql map file

------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"  
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap>
     <!-- <resultMap id="getActorsByNameResultMap"  
class="org.fydji.wsrm.examples.Actor"> -->
     <resultMap id="getActorsByNameResultMap" class="xml">
         <result property="id" column="ID" javaType="java.lang.Integer"/>
         <result property="email" column="EMAIL"  
javaType="java.lang.String"/>
         <result property="firstName" column="FIRST_NAME"  
javaType="java.lang.String"/>
         <result property="name" column="NAME"  
javaType="java.lang.String"/>
         <result property="organization" column="ORGANIZATION"  
javaType="java.lang.String"/>
     </resultMap>
     <select id="getActorsByName" parameterClass="java.util.Map"  
resultMap="getActorsByNameResultMap" xmlResultName="Actor">
         select
             ID,
             EMAIL,
             FIRST_NAME,
             NAME,
             ORGANIZATION
         from
             FY_ACTOR
         where
             NAME like #name#
     </select>
</sqlMap>
--------------

Here is the obained output :

--------------
DEBUG [main] - Created connection 5068254.
DEBUG [main] - {conn-100000} Connection
DEBUG [main] - {pstm-100001} PreparedStatement:          select          
      ID,             EMAIL,             FIRST_NAME,             NAME,    
           ORGANIZATION         from              FY_ACTOR         where  
             NAME like ?
DEBUG [main] - {pstm-100001} Parameters: [Si%]
DEBUG [main] - {pstm-100001} Types: [java.lang.String]
DEBUG [main] - {rset-100002} ResultSet
DEBUG [main] - {rset-100002} Header: [ID, EMAIL, FIRST_NAME, NAME,  
ORGANIZATION]
DEBUG [main] - {rset-100002} Result: [1, f.silvestre@fylab.com, Franck,  
Silvestre, Fylab]
DEBUG [main] - {rset-100002} Result: [5, s.sigur@fylab.com, StÈphane,  
Sigur, Sigur.net]
<?xml version="1.0" encoding="UTF-8"?>
<result><id>1</id><email>f.silvestre@fylab.com</ 
email><firstName>Franck</firstName><name>Silvestre</ 
name><organization>Fylab</organization></result>
<?xml version="1.0" encoding="UTF-8"?>
<result><id>5</id><email>s.sigur@fylab.com</email><firstName>StÈphane</ 
firstName><name>Sigur</name><organization>Sigur.net</organization></ 
result>
DEBUG [main] - Returned connection 5068254 to pool.

--------------

Thanks in advance,
Franck

Le 14 févr. 05, à 18:20, Clinton Begin a écrit :

> There's no way to customize the XML output.  You'll just need to use
> either XSLT or some other means of transformation.  The xmlResultName
> should work though.  Can you post an example of what you're doing?
>
> Clinton
>
>
> On Mon, 14 Feb 2005 18:11:57 +0100, Franck Silvestre
> <f....@fylab.com> wrote:
>> I'm completely new to ibatis .
>> I play with the ability to get XML output.
>>
>> If I use in my sql map file a resultMap with the attribute class set  
>> as
>> "xml" I get a String for each item of  the result list.
>> Is it possible to customize the root element name of  fetched items ?
>> The default root element name is "result". I tried to use the
>> "xmlResultName" of the "select" element but it did nothing.
>>
>> Second question : is there a way to customize the structure of the xml
>> output (for exemple tell  a fetched value to be an attribute of  an
>> element) ?
>>
>> Thanks in advance
>> Franck
>>
>>
>
>
----------------------------------
Franck SILVESTRE
Directeur technique
FYLAB
55, av Louis-Bréguet,
Bâtiment 7 - 1er étage
31400 Toulouse
Tel : 		+33 5 62 47 00 39
Mobil : 	+33 6 14 65 23 76
Fax :		+33 5 62 47 00 36
http://www.fylab.com
http://www.fytraining.com



Re: customizing XML output

Posted by Clinton Begin <cl...@gmail.com>.
There's no way to customize the XML output.  You'll just need to use
either XSLT or some other means of transformation.  The xmlResultName
should work though.  Can you post an example of what you're doing?

Clinton


On Mon, 14 Feb 2005 18:11:57 +0100, Franck Silvestre
<f....@fylab.com> wrote:
> I'm completely new to ibatis .
> I play with the ability to get XML output.
> 
> If I use in my sql map file a resultMap with the attribute class set as
> "xml" I get a String for each item of  the result list.
> Is it possible to customize the root element name of  fetched items ?
> The default root element name is "result". I tried to use the
> "xmlResultName" of the "select" element but it did nothing.
> 
> Second question : is there a way to customize the structure of the xml
> output (for exemple tell  a fetched value to be an attribute of  an
> element) ?
> 
> Thanks in advance
> Franck
> 
>