本文介绍: log.error(“转换XML失败:” + e.getMessage());// 如果xml参数中有以下协议,则不需要再重复加。// 将对象转换成输出流形式的xml。// 进行将Xml转成对象的核心接口。* @param xmlPath xml文件路径。// 利用jdk中自带的转换类实现。// 格式化xml输出的格式。* 将String类型的xml转换成对象。* 将file类型的xml转换成对象。* 将对象根据路径转换成xml文件。* xml装换成JavaBean。* xml文件配置转换为对象。
package com.sunac.ocims.entity.esb; import jdk.internal.org.xml.sax.SAXException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.Source; import javax.xml.transform.sax.SAXSource; import java.io.*; public class XmlUtils { private static final Logger log = LoggerFactory.getLogger(XmlUtils.class); public static String convertToXml(Object obj) { String resultXml = "<?xml version="1.0" encoding="utf-8"?>rn"; return resultXml + convertToXml(obj, "utf-8"); } public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { log.error("转换XML失败:" + e.getMessage()); } return result; } /** * 将对象根据路径转换成xml文件 * * @param obj * @param path * @return */ public static void convertToXmlFile(Object obj, String path) { try { // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml // 创建输出流 FileWriter fw = null; try { fw = new FileWriter(path); } catch (IOException e) { e.printStackTrace(); } marshaller.marshal(obj, fw); } catch (JAXBException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") /** * 将String类型的xml转换成对象 */ public static <V> V convertXmlStrToObject(Class<V> clazz, String xmlStr) { String resultXml = "<?xml version="1.0" encoding="utf-8"?>rn"; V xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); // 进行将Xml转成对象的核心接口 Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(resultXml + xmlStr); xmlObject = (V)unmarshaller.unmarshal(sr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } @SuppressWarnings("unchecked") /** * 将file类型的xml转换成对象 */ public static Object convertXmlFileToObject(Class clazz, String xmlPath) { Object xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); FileReader fr = null; try { fr = new FileReader(xmlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } xmlObject = unmarshaller.unmarshal(fr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } /** * xml装换成JavaBean * * @param t * @param xml * @return */ @SuppressWarnings("unchecked") public static <T> T converyToJavaBean(Class<T> t, String xml) { // 如果xml参数中有以下协议,则不需要再重复加 String resultXml = "<?xml version="1.0" encoding="utf-8"?>rn"; T obj = null; SAXParserFactory sax = null; StringReader reader = null; try { JAXBContext context = JAXBContext.newInstance(t); Unmarshaller unmarshaller = context.createUnmarshaller(); reader = new StringReader(resultXml + xml); sax = SAXParserFactory.newInstance(); // sax.setXIncludeAware(false); sax.setValidating(false); // 忽略命名空间 sax.setNamespaceAware(false); XMLReader xmlReader = sax.newSAXParser().getXMLReader(); Source source = new SAXSource(xmlReader, new InputSource(reader)); obj = (T) unmarshaller.unmarshal(source); return obj; } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e.getMessage()); } finally { if (reader != null) { reader.close(); } } } /** * xml文件配置转换为对象 * @param xmlPath xml文件路径 * @param load java对象.Class * @return java对象 * @throws JAXBException * @throws IOException */ @SuppressWarnings("unchecked") public static <T> T xmlToBean(String xmlPath, Class<T> load) throws Exception { JAXBContext context = JAXBContext.newInstance(load); Unmarshaller unmarshaller = context.createUnmarshaller(); SAXSource saxSource = newSAxSource(xmlPath); return (T) unmarshaller.unmarshal(saxSource); } protected static SAXSource newSAxSource(String xml) throws FileNotFoundException, ParserConfigurationException, SAXException, org.xml.sax.SAXException { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); saxParserFactory.setNamespaceAware(false); XMLReader xmlReader = saxParserFactory.newSAXParser().getXMLReader(); SAXSource saxSource = new SAXSource(xmlReader, new InputSource(new ByteArrayInputStream(xml.getBytes()))); return saxSource; } }
原文地址:https://blog.csdn.net/qq_38788128/article/details/135955900
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_65333.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。