zoukankan      html  css  js  c++  java
  • 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;
    	}
    

  • 相关阅读:
    js 原生ajax实现
    layer 查看图片
    c# 操作XML
    C# 扩展方法
    c# 依赖注入
    visual studio 快捷键
    HIS系统结算后,没有更新单据状态为“已结算”
    网络流四·最小路径覆盖 HihoCoder
    飞行员配对(二分图最大匹配) 51Nod
    开心的小Q 51Nod
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4517010.html
Copyright © 2011-2022 走看看