XML解析学习

DOM解析

需要加载整个XML文件,对于内存的需求较大,并且可以对XML文件进行增删改查操作。
DOM解析通常用于JavaWEB项目开发中,作用于框架配置文件。

SAX解析

读取一行XML文件,解析一行XML文件,对于内存需求较小,没有对于XML文件修改能力。
一般用于手机文本解析方式
以上LOW

使用Dom4J解析XML文件

public class Demo1 {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        // 1. 创建获取XML文件的核心类 SAXReader
        SAXReader saxReader = new SAXReader();

        /*
         2. 读取对应的XML文件,获取XML文件的Document对象,也就是整个XML文件对象
         这里需要使用Document对象解析整个XML文件
        */
        Document document = saxReader.read(new FileInputStream("./src/student.xml"));

        /*
        3. 获取XML文件的根节点对象,根节点对象是Element XML元素对象
         */
        Element rootElement = document.getRootElement();

        /*
        根据指定的子节点名字获取当前节点下的第一个子节点
         */
        Element student = rootElement.element("student");
        System.out.println(student);

        // 可以获取对应名字的属性值
        String id = student.attributeValue("id");
        System.out.println(id);

        // 获取当前节点的所有子节点List集合
        List<Element> elements = student.elements();
        for (Element element : elements) {
            // 获取文本节点对应的文本数据,返回值是String类型
            System.out.println(element.getText());

            if ("address".equals(element.getName())) {
                List<Element> elements1 = element.elements();
                for (Element element1 : elements1) {
                    System.out.println(element1.getText());
                }
            }
        }
    }
  }

Xpath解析XML文件

Xpath 语法API
https://www.w3school.com.cn/xpath/xpath_syntax.asp[API]

public class Demo2 {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new SAXReader().read(new FileInputStream("./src/student.xml"));

        Element rootElement = document.getRootElement();
    
        List<Element> list = rootElement.selectNodes("//name");
        for (Element element : list) {
            System.out.println(element.getText());
        }

        List<DefaultAttribute> list1 = rootElement.selectNodes("//@id");
        for (DefaultAttribute element : list1) {
            System.out.println(element.getValue());
        }

        List<Element> list2 = rootElement.selectNodes("//student[1]");
        for (Element element : list2) {
            System.out.println(element);
            System.out.println(element.element("name").getText());
            System.out.println(element.element("age").getText());
            System.out.println(element.element("gender").getText());
            System.out.println(element.element("salary").getText());
        }

        List<Element> list3 = rootElement.selectNodes("//student[last()]");
        for (Element element : list3) {
            System.out.println(element);
            System.out.println(element.element("name").getText());
            System.out.println(element.element("age").getText());
            System.out.println(element.element("gender").getText());
            System.out.println(element.element("salary").getText());
        }

        List<Element> list4 = rootElement.selectNodes("//student[@id = 2]");
        for (Element element : list4) {
            System.out.println(element);
            System.out.println(element.element("name").getText());
            System.out.println(element.element("age").getText());
            System.out.println(element.element("gender").getText());
            System.out.println(element.element("salary").getText());
        }

        List<Element> list5 = rootElement.selectNodes("//student[salary > 25000]");
        for (Element element : list5) {
            System.out.println(element);
            System.out.println(element.element("name").getText());
            System.out.println(element.element("age").getText());
            System.out.println(element.element("gender").getText());
            System.out.println(element.element("salary").getText());
        }
    }
}
发布了21 篇原创文章 · 获赞 4 · 访问量 205

猜你喜欢

转载自blog.csdn.net/weixin_46221109/article/details/104472469