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
127 lines
4.0 KiB
2 years ago
|
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);
|
||
|
}
|
||
|
|
||
|
}
|