Jaxb
来源:互联网 发布:linux shell 输入 编辑:程序博客网 时间:2024/06/08 17:38
/* * Copyright (c) 2015. Bond(China), java freestyle app */package com.jfa.commons.util;import javax.xml.bind.*;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.lang.reflect.Method;public class JAXBUtils { /** * 通过一个指定的Java类,和一个文件生成一个POJO * * @param clz Class * 由xjc.bat生成 * @param xmlDoc 数据文件 * @return * @throws JAXBException */ @SuppressWarnings("unchecked") public static <T extends Object> T parseXmlDocument(Class<?> clz, File xmlDoc) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(clz); Unmarshaller shaller = jaxbContext.createUnmarshaller(); return (T) shaller.unmarshal(xmlDoc); } /** * 生成一个指定XML文档 * * @param t T * @param storeFileName * @return * @throws JAXBException * @throws FileNotFoundException */ public static <T extends Object> Boolean generalXmlDocument(T t, String storeFileName) throws JAXBException { try { String pkg = t.getClass().getPackage().getName(); JAXBContext context = JAXBContext.newInstance(pkg); JAXBElement<?> element = _invoke(t); if (element == null) { return false; } Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); marshaller.marshal(element, new FileOutputStream(storeFileName)); return true; } catch (Exception e) { throw new JAXBException(e); } } /* * 生成一个工厂对象,并创建JAXBElement对象 */ @SuppressWarnings("unchecked") private static <T extends Object> JAXBElement<T> _invoke(Object o) throws Exception { String pkg = o.getClass().getPackage().getName(); Class<?> clz = Class.forName(pkg + ".ObjectFactory"); Method[] methods = clz.getMethods(); Object factory = clz.newInstance(); String destName = "create" + o.getClass().getSimpleName(); for (Method method : methods) { if (method.getName().equals(destName)) { return (JAXBElement<T>) method.invoke(factory, o); } } return null; }}
0 0
- JAXB
- jaxb
- JAXB
- JAXB
- jaxb
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- JAXB
- SQL学习笔记[5] - 通过分隔符解析方式实现向SQL存储过程传递数组参数
- 黑马程序员——C语言学习笔记03 变量在内存中存储的细节、位运算
- HDU-4430-Yukari's Birthday-暴力+二分
- STL之deque实现
- Android开发,连接到指定WIFI
- Jaxb
- STL之heap实现
- Android与js交互实例
- OS X 10.11 下解决Python-MysqlDB无法使用的问题
- STL之statck实现
- Best Route in a Grid
- 浅谈互联网的应聘
- 1_jingjing1
- 粒子动画处理