Java: JAXB and using char

I am working on a project with JAXB, but I am having a little problem with JAXB and char data type.

char gender = 'M';

Translates after sorting to:

<gender>77</gender>

So, I think the char is mapped to an integer, but I just want to map it to String. How can i do this? Is it possible?

+5
source share
5 answers

After some experimentation, there seems to be no way to configure JAXB to properly handle primitive characters. However, it is difficult for me to accept it.

XmlAdaptor, String, , , , , .

, , - char @XmlTransient, , String:

   @XmlTransient
   char gender = 'M';

   @XmlElement(name="gender")
   public void setGenderAsString(String gender) {
      this.gender = gender.charAt(0);
   }

   public String getGenderAsString() {
      return String.valueOf(gender);
   }

, , char String, , .

+5
@XmlJavaTypeAdapter(value=MyAdapter.class, type=int.class)

, ,

package-info, ,

.

public class MyAdapter extends XmlAdapter<String, Integer> {
+3

, :)

String gender = "M";
+1

Metro JAXB (RI), , Metro JDK 1.6.0_20.

EclipseLink JAXB (MOXy) char :

EclipseLink JAXB, eclipselink.jar jaxb.properties :

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
+1

XmlAdapter:

package br.com.maritima.util;

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class CharAdapter extends XmlAdapter<String,Character>{

 @Override
 public String marshal(Character v) throws Exception {
  return new String(new char[]{v});
 }

 @Override
 public Character unmarshal(String v) throws Exception {
   if(v.length()>0)
   return v.charAt(0);
  else return ' ';
 }

}

package-info.java( - ) .

. http://blogs.oracle.com/CoreJavaTechTips/entry/exchanging_data_with_xml_and .

0

All Articles