xml的合成和解析有两种方式:
1. JAXB
2. dom4j
1. JAXB(Java Architecturefor XML Binding)
1.1 提供将xml转化成对象。
public static <T> T convertDto(String domXml, Class<T> clazz) throws JAXBException { T t = null; JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(domXml)); return t; }
对象要设置标识:
@XmlRootElement(name="request") @XmlAccessorType(XmlAccessType.FIELD) public class TestDto {
1.2 提供将对象转化成xml对象。
public static <T> String convertXml(T t) throws JAXBException { JAXBContext context = JAXBContext.newInstance(t.getClass()); Marshaller marshaller = context.createMarshaller(); String str = null; try(ByteArrayOutputStream os = new ByteArrayOutputStream()){ marshaller.marshal(t, os); str = os.toString(); } catch (IOException e) { e.printStackTrace(); } return str; }
2. dom4j
参考文献 DOM4j的用法 (https://blog.csdn.net/qq_24065713/article/details/77970469)
首先引入DOM4j的jar包。
获取文件信息:
SAXReader reader = new SAXReader(); Document document = reader.read(new File(versionFile));
Element root = document.getRootElement();
Element element = root.element("db");//获取根元素下的子元素
element .attributeValue("name");//获取元素的属性值
element.getText();//获取元素的内容
element.setText(***); //注意内容不能为null
写入完毕后,要进行重新覆盖保存才能生效,要不然修改的是内存中的信息。
// 文件写入 try(OutputStream os = new FileOutputStream(file)){ XMLWriter writer = new XMLWriter(os); writer.write(document); writer.flush(); writer.close(); }
※ 注意在使用XMLWriter 时 文件的编码格式,默认采用系统的编码格式。