zoukankan      html  css  js  c++  java
  • 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 时 文件的编码格式,默认采用系统的编码格式。

  • 相关阅读:
    set, unordered_set模板类
    C/C++ Bug记录
    win10远程连接
    C/C++缓冲区刷新问题
    hihocoder1711 评论框排版[并查集+set]
    makefile
    Virtual Table
    粤语
    xilinx SDK开发 GPIO使用API总结
    基于zynq 7020的串口UART中断实验
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8744799.html
Copyright © 2011-2022 走看看