• XML文本解析


    XML 全称 eXtensible Markup Language(指可扩展标记语言),常作为配置文件的文件格式;
    解析方式有: dom 和 sax
    dom 一次读取,十分耗内存,但可以进行curd操作
    sax 逐行读取,内存消耗少,只能进行读操作

    解析使用Dom4j库,首先创建一个Maven工程,导包

    <!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>1.6.1</version>
    </dependency>
    

    解析的demo xml内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <person>
        <p1>
            <name>jason</name>
            <age>26</age>
        </p1>
        <p1>
            <name>tom</name>
            <age>18</age>
        </p1>
    </person>
    

    创建Java类,进行解析

    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    import java.util.List;
    
    public class TestDom4j {
        public static void main(String[] args) throws Exception {
            SelectName();
        }
        public static void SelectName() throws Exception {
            // 创建解析器
            SAXReader saxReader = new SAXReader();
            // 得到Document
            Document document= saxReader.read("src\main\resources\XmlRead.xml");
            // 得到根节点
            Element root = document.getRootElement();
            //得到所有P1
            List<Element> list= root.elements("p1");
    //        Element e1= list.get(0);
    //        Element e2= list.get(1);
    
    //        //得到第一个p1
    //        Element e1= root.element("p1");
    //        Element n1 = e1.element("name");
    //        System.out.println(n1.getText());
    //        // 得到p1里面的属性值
    //        String value = p1.attributeValue("name")
    //        System.out.println(value);
            
    //        // 删除元素属性
    //        n1.getParent();// 获取到n1的父节点e1
    //        e1.remove(n1);
    
            // 遍历list
            for (Element element : list) {
                Element name1 = element.element("name");
                String s = name1.getText();
                System.out.println(s);
            }
        }
    
        public static void AddXmlInfo(Student student) throws Exception {
            // 创建解析器
            SAXReader saxReader = new SAXReader();
            // 得到Document
            Document document = saxReader.read("src\main\resources\XmlRead.xml");
            // 得到根节点
            Element root = document.getRootElement();
            // 在根节点上添加stu
            Element stu = root.addElement("stu");
            Element id1 = stu.addElement("id");
            Element name1 = stu.addElement("name");
            Element age1 = stu.addElement("age");
            // 赋值
            id1.setText(student.getId());
            name1.setText(student.getName());
            age1.setText(student.getAge());
            //回写XML
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src\main\resources\t1.xml"),format);
            xmlWriter.write(document);
            xmlWriter.close();
        }
          
    }
    
    

    整体看,和Xpath解析HTML很类似.

    <人追求理想之时,便是坠入孤独之际.> By 史泰龙
  • 相关阅读:
    落花美眷,终究抵不过逝水流年,回忆我的2016,展望2017。
    如何对于几百行SQL语句进行优化?
    基于.NET Socket API 通信的综合应用
    数据库备份定期删除程序的开发。
    如何开发应用程序将客户服务器数据库的备份,下载到本地的云服务上?
    从大公司做.NET 开发跳槽后来到小公司的做.NET移动端微信开发的个人感慨
    asp.net mvc entity framework 数据库 练习(一)
    ASP.NET CORE小试牛刀:干货(完整源码)
    [开源].NET数据库访问框架Chloe.ORM
    SqlBulkCopy简单封装,让批量插入更方便
  • 原文地址:https://www.cnblogs.com/jason-Gan/p/13781353.html
Copyright © 2020-2023  润新知