微信后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
4.0 KiB

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 <T> Object convertXmlStrToObject(String xmlStr, Class<T> 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 <T> Object convertXmlFileToObject(String xmlPath, Class<T> 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);
}
}