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\"?>" + "\n    ");
 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 }

猜你喜欢

转载自www.cnblogs.com/huzi007/p/11334765.html