zoukankan      html  css  js  c++  java
  • java自带的xml解析工具类

      1 public class JaxbUtil {
      2 
      3     /**
      4      * java对象转换为xml文件
      5      * 
      6      * @param xmlPath xml文件路径
      7      * @param load    java对象.Class
      8      * @return xml文件的String
      9      * @throws JAXBException
     10      */
     11     public static String beanToXml(Object obj, Class<?> load) throws JAXBException {
     12         JAXBContext context = JAXBContext.newInstance(load);
     13         Marshaller marshaller = context.createMarshaller();
     14         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
     15         StringWriter writer = new StringWriter();
     16         marshaller.marshal(obj, writer);
     17         return writer.toString();
     18     }
     19 
     20     /**
     21      * xml文件配置转换为对象
     22      * 
     23      * @param xmlPath xml文件路径
     24      * @param load    java对象.Class
     25      * @return java对象
     26      * @throws JAXBException
     27      * @throws IOException
     28      */
     29     @SuppressWarnings("unchecked")
     30     public static <T> T xmlToBean(String xmlPath, Class<T> load) throws JAXBException, IOException {
     31         JAXBContext context = JAXBContext.newInstance(load);
     32         Unmarshaller unmarshaller = context.createUnmarshaller();
     33         return (T) unmarshaller.unmarshal(new StringReader(xmlPath));
     34     }
     35 
     36     /**
     37      * JavaBean转换成xml 默认编码UTF-8
     38      * 
     39      * @param obj
     40      * @param writer
     41      * @return
     42      */
     43     public static String convertToXml(Object obj) {
     44         return convertToXml(obj, "UTF-8");
     45     }
     46 
     47     /**
     48      * JavaBean转换成xml
     49      * 
     50      * @param obj
     51      * @param encoding
     52      * @return
     53      */
     54     public static String convertToXml(Object obj, String encoding) {
     55         String result = null;
     56         try {
     57             JAXBContext context = JAXBContext.newInstance(obj.getClass());
     58             Marshaller marshaller = context.createMarshaller();
     59             marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     60             marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
     61             //去掉生成xml的默认报文头  
     62              marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); 
     63             StringWriter writer = new StringWriter();
     64             writer.append("<?xml version="1.0" encoding="UTF-8"?>" + "
        ");
     65             marshaller.marshal(obj, writer);
     66             result = writer.toString();
     67         } catch (Exception e) {
     68             e.printStackTrace();
     69         }
     70         return result;
     71     }
     72 
     73     /**
     74      * JavaBean转换成xml去除xml声明部分
     75      * 
     76      * @param obj
     77      * @param encoding
     78      * @return
     79      */
     80     public static String convertToXmlIgnoreXmlHead(Object obj, String encoding) {
     81         String result = null;
     82         try {
     83             JAXBContext context = JAXBContext.newInstance(obj.getClass());
     84             Marshaller marshaller = context.createMarshaller();
     85             marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     86             marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
     87             marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
     88             StringWriter writer = new StringWriter();
     89             marshaller.marshal(obj, writer);
     90             result = writer.toString();
     91         } catch (Exception e) {
     92             e.printStackTrace();
     93         }
     94         return result;
     95     }
     96 
     97     /**
     98      * xml转换成JavaBean
     99      * 
    100      * @param xml
    101      * @param c
    102      * @return
    103      */
    104     @SuppressWarnings("unchecked")
    105     public static <T> T converyToJavaBean(String xml, Class<T> c) {
    106         T t = null;
    107         try {
    108             JAXBContext context = JAXBContext.newInstance(c);
    109             Unmarshaller unmarshaller = context.createUnmarshaller();
    110             t = (T) unmarshaller.unmarshal(new StringReader(xml));
    111         } catch (Exception e) {
    112             e.printStackTrace();
    113         }
    114         return t;
    115     }
    116 
    117     private static OutputFormat createPrettyPrint() {
    118         OutputFormat format = new OutputFormat();
    119         //format.setIndentSize(2);
    120         format.setNewLineAfterDeclaration(false);
    121         format.setNewlines(true);
    122         format.setTrimText(false);
    123         format.setPadText(false);
    124         return format;
    125     }
    126 
    127     /**
    128      * 
    129      * @Title: formatXml
    130      * @author:humingbo
    131      * @date:2019年7月18日上午11:35:08
    132      * @Description: 格式化xml方法
    133      * @param str
    134      * @return
    135      * @throws Exception
    136      */
    137     public static String formatXml(String str) throws Exception {
    138         Document document = null;
    139         document = DocumentHelper.parseText(str);
    140         // 格式化输出格式
    141         OutputFormat format = createPrettyPrint();
    142         format.setEncoding("UTF-8");
    143         StringWriter writer = new StringWriter();
    144         // 格式化输出流
    145         XMLWriter xmlWriter = new XMLWriter(writer, format);
    146         // 将document写入到输出流
    147         xmlWriter.write(document);
    148         xmlWriter.close();
    149         return writer.toString();
    150     }
    151 }
  • 相关阅读:
    Windows故障恢复控制台使用方法
    Windows XP SP2下安装WinCC V6.0 SP3 的安装步骤
    Windows Server2003 安装WinCC6.2 sp2
    pb6.5不兼容Oracle10g
    Windows Server 2003 Sp2 雨林木风版
    移动硬盘WINPE启动盘安装GHOST系统图解
    Vista硬盘安装详细图解
    系统的层次性与单一职责原则
    用dynamic增强C#泛型表达力
    谈单元测试的状态验证和行为验证
  • 原文地址:https://www.cnblogs.com/huzi007/p/11334765.html
Copyright © 2011-2022 走看看