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 }

原文地址:https://www.cnblogs.com/huzi007/p/11334765.html

时间: 2024-09-29 08:21:32

java自带的xml解析工具类的相关文章

使用java自带的xml解析器解析xml

使用java自带的xml解析器解析xml,其实我不推荐,可以用Dom解析,或其他的方式,因为Java自带的解析器使用不但麻烦,且还有bug出现. 它要求,针对不同的xml(结构不同),必须写对应的handler处理类,而Dom解析可以写通用的方法(前提是要写出通用逻辑)来处理,开发比较快.下面上代码 1 //------------------ main point --------------------- 2 javax.xml.parsers.SAXParserFactory 3 publ

java基础----&gt;java自带的xml解析

在查看公司框架的源码的时候,发现框架用的是jdk自带的xml解析.今天,想着对它总结一下. 利用jdk自带的xml创建文档 一. CreateXmlFile类如下: package com.huhx.saxxml; import java.io.FileOutputStream; import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilde

微信支付 XML解析工具类

发送请求SortedMap<String, String> 格式的,需要将其解析为XML格式的字符串 package utils; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.It

XML解析工具类

public class XmlUtil { /* * 利用dom4j解析xml文件内容,并返回map数据形式 * path是.xml文件所在的路径 */ public static Map<String,String> paserXmlByDOM4J(String path) throws Exception{ path=ServletActionContext.getServletContext().getRealPath(path); SAXReader reader = new SAX

Java中XML解析工具范例

1.直接代码部分: 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.util.List; 4 import org.jdom.Document; 5 import org.jdom.Element; 6 import org.jdom.input.SAXBuilder; 7 import org.xml.sax.InputSource; 8 9 /** 10 * 作用: XML解析工具类,其中的属性根据

java二维码编码和解析工具类

用到两个jar包: QRCode.jar Qrcodeen.jar package com.banmacoffee.utils; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; imp

JSON对象与XML相互转换工具类

依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</

Java字符串转16 进制工具类Hex.java

原文:Java字符串转16 进制工具类Hex.java 源代码下载地址:http://www.zuidaima.com/share/1550463378410496.htm Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后再将 md 之后的数据 hex 一下. 这个工具类,就是实现此效果的. /* * */ package com.zuidaim

PHP 命令行参数解析工具类

<?php /** * 命令行参数解析工具类 * @author guolinchao */ class CommandLine { // 临时记录短选项的选项值 private static $shortOptVal = null; // options value private static $optsArr = array(); // command args private static $argsArr = array(); // 是否已解析过命令行参数 private static