package com.ynxbd.wx.utils; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import java.io.*; /** * xml工具类 */ public class XMLUtil { /** * 将对象直接转换成String类型的 XML输出 * * @param obj 对象 * @return xml */ public static String convertToXml(Object obj) { try { // 创建输出流 StringWriter sw = new StringWriter(); // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml marshaller.marshal(obj, sw); return sw.toString(); } catch (JAXBException e) { e.printStackTrace(); } return null; } /** * 将对象根据路径转换成xml文件 * * @param obj 对象 * @param path 路径 * @return 是否成功 */ public static boolean convertToXml(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; fw = new FileWriter(path); marshaller.marshal(obj, fw); return true; } catch (Exception e) { e.printStackTrace(); } return false; } /** * @param xmlStr xml * @param clazz 类型 * @return 对象 */ public static Object convertXmlStrToObject(String xmlStr, Class clazz) { try { JAXBContext context = JAXBContext.newInstance(clazz); // 进行将Xml转成对象的核心接口 XMLInputFactory xif = XMLInputFactory.newFactory(); xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false); xif.setProperty(XMLInputFactory.SUPPORT_DTD, false); XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader(xmlStr)); Unmarshaller unmarshaller = context.createUnmarshaller(); return unmarshaller.unmarshal(xsr); } catch (JAXBException | XMLStreamException e) { e.printStackTrace(); } return null; } /** * 将file类型的xml转换成对象 * * @param xmlPath 文件路径 * @param clazz 类型 * @return 数据对象 */ public static Object convertXmlFileToObject(String xmlPath, Class clazz) { try { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); FileReader fr = null; try { fr = new FileReader(xmlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } return unmarshaller.unmarshal(fr); } catch (JAXBException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String a = "批次编号:20043945妇科材料库“一次性使用无菌阴道扩张器 中号 A型轴转式\"的库存为2已不足执行2个过程失败!"; String s1 = a.replaceAll("\"", "”"); String s = s1.replaceAll(" ", ""); System.out.println(s1); System.out.println(s); } }