xml 解析

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 时 文件的编码格式,默认采用系统的编码格式。

原文地址:https://www.cnblogs.com/DennyZhao/p/8744799.html