Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。是一种xml与object映射绑定技术标准。
JDK5以下开发需要的jar包:activation.jar、jaxb-api.jar、 jaxb-impl.jar、 jsr173-api.jar
JDK6以上版本已经集成JAXB2的JAR,在目录{JDK_HOME}/jre/lib/rt.jar中。
@XmlAccessorType 注解 的枚举常量值说明:
代码片段:
* xml字符串 转 pojo * * @param t * @param xmlStr * @return */ @SuppressWarnings("rawtypes") public static Object jaxbReadXml(Class cls,String xmlStr) { ByteArrayInputStream stream = null; try { JAXBContext context = JAXBContext.newInstance(cls); stream = new ByteArrayInputStream(xmlStr.getBytes("utf-8")); Unmarshaller um = context.createUnmarshaller(); return um.unmarshal(stream); } catch (Exception e) { e.printStackTrace(); logger.error("----xml转对象出错:"+e.getMessage()); } finally { if (stream != null) { try { stream.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; } @SuppressWarnings("rawtypes") public static Object jaxbReadXml(Class cls,byte[] bs) { return jaxbReadXml(cls,new ByteArrayInputStream(bs)); } @SuppressWarnings("rawtypes") public static Object jaxbReadXml(Class cls,InputStream in) { try { JAXBContext context = JAXBContext.newInstance(cls); Unmarshaller um = context.createUnmarshaller(); return um.unmarshal(in); } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (Exception e) { e.printStackTrace(); } } } return null; } /** * pojo 转 xml字符串 * * @param pojo * @return */ public static <T> String jaxbWriteXml(T pojo) { StringWriter out = null; String xmlStr = null; try { JAXBContext context = JAXBContext.newInstance(pojo.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true); out = new StringWriter(); marshaller.marshal(pojo,out); xmlStr = out.toString(); // System.out.println(xmlStr); } catch (Exception e) { e.printStackTrace(); logger.error("----对象转xml出错:"+e.getMessage()); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } return xmlStr; }