JAXB 操作XML 与 Object

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;
	}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇