jaxb实现xml 和 json 之间的转换
2018-02-06 14:57
471 查看
jaxb2 实体类转xml:
public static String toXML(Object obj, String encode, boolean format, boolean fragment) { try { JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_ENCODING, encode); // 编码格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, format); // 是否格式化生成的xml串 marshaller.setProperty(Marshaller.JAXB_FRAGMENT, fragment); // 是否省略xm头声明信息 StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); return writer.toString(); } catch (Exception e) { throw new RuntimeException(e); } }
jaxb2 xml转实体类:
public static <T> T fromXML(String xml, Class<T> valueType) { try { JAXBContext jaxbContext = JAXBContext.newInstance(valueType); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); return (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } }
优化:
static Map<String, JAXBContext> jaxbContextMap = new HashMap<String, JAXBContext>(); /** * java实体类转xml */ public static String toXML(Object obj, String encode, boolean format, boolean fragment) { try { JAXBContext jaxbContext = jaxbContextMap.get(obj.getClass().getName()); if(jaxbContext == null){ // 如果每次都调用JAXBContext.newInstance方法,会导致性能急剧下降 jaxbContext = JAXBContext.newInstance(obj.getClass()); jaxbContextMap.put(obj.getClass().getName(), jaxbContext); } Marshaller marshaller = jaxbContext.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_ENCODING, encode); // 编码格式 4000 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, format); // 是否格式化生成的xml串 marshaller.setProperty(Marshaller.JAXB_FRAGMENT, fragment); // 是否省略xm头声明信息 StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); return writer.toString(); } catch (Exception e) { throw new RuntimeException(e); } } /** * xml转java实体类 */ @SuppressWarnings("unchecked") public static <T> T fromXML(String xml, Class<T> valueType) { try { JAXBContext jaxbContext = jaxbContextMap.get(valueType.getName()); if(jaxbContext == null){ jaxbContext = JAXBContext.newInstance(valueType); jaxbContextMap.put(valueType.getName(), jaxbContext); } Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); return (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } }
相关文章推荐
- 使用JAXB来实现Java合xml之间的转换
- 使用JAXB来实现Java合xml之间的转换
- 利用JAXB实现xml和bean之间的转换(一)
- 用php实现xml与json之间的相互转换
- Json-lib实现json,java对象,xml之间相互转换 .
- 用php实现xml与json之间的相互转换
- Json-lib 实现 json,java 对象,xml 之间相互转换
- JAXB 实现java对象与xml之间互相转换
- JAXB 实现java对象与xml之间互相转换
- JAXB实现JAVA BEAN与XML之间的转换
- JAXB 实现java对象与xml之间互相转换
- 利用JAXB实现xml和bean之间的转换(一)
- JAXB 实现java对象与xml之间互相转换
- JAXB实现java对象与xml之间转换
- JAXB工具实现java实体类和xml之间的转换
- 使用 XStream实现JavaBean 与 XML/JSON 之间相互转换
- JAXB 实现java对象与xml之间互相转换(一)
- staxon 实现 json 与xml 之间的转换 支持数组,属性
- Jaxb实现Java对象与XML之间的转换
- JAXB 实现java对象与xml之间互相转换