当前位置: 首页 > article >正文

XML的使用

一.xml

1.xml是什么:指可扩展标记语言,被设计用来传输和存储数据,可以解决程序间数据传输的问题,也可以做配置文件,还可以充当小型的数据库
2.xml的标签可以自定义,但其命名方式需要注意以下几点 区分大小写;不能以数字开头;不能包含空格;名称中间不能包含冒号;如果标签之间需要间隔建议使用下划线
3.属性 属性值用双引号或者单引号进行分隔,一个元素可以有多个属性,特定的属性名称在同一个元素标记中只能出现一次,属性值不能包括&字符
4.CDATA节:有些内容不想让解析引擎执行,而是当做原始内容处理(即当做普通文本),可以用CADTA包括起来,CDATA节中的所有字符都会被当做简单文本,而不是xml标记 (除]]>其他都可以放) <![CDATA[文本内容]]]>
5.转义字符:&表示& <表示< >表示>

二.DOM4j

1.DOM4J用于对xml文件进行解析处理,可以对文件进行增删改查
2.下面是使用DOM4j的一些例子

import org.dom4j.Document;
        import org.dom4j.DocumentException;
        import org.dom4j.DocumentHelper;
        import org.dom4j.Element;
        import org.dom4j.io.OutputFormat;
        import org.dom4j.io.SAXReader;
        import org.dom4j.io.XMLWriter;
        import org.junit.jupiter.api.Test;

        import java.io.*;
        import java.util.List;

public class Dom4j_ {

    //    演示如何加载xml文件
    @Test
    public void loadXML() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        //看document的对象属性
        Document document = reader.read(new File("src/main/java/students.xml"));
        System.out.println(document);
    }

    @Test
    //遍历所有的students信息
    public void ListStus() throws DocumentException {
        //1得到解析器
        SAXReader reader = new SAXReader();
        //2用解析器解析文件
        Document document = reader.read(new File("src//main//java//students.xml"));
        //3得到一个dom对象,得到根节点
        Element rootElement = document.getRootElement();
        //4得到根节点的students
        List<Element> students = rootElement.elements();
        System.out.println(students);
        for (Element student : students) {
            //获取student的下面的子元素
            Element name = student.element("name");
            Element age = student.element("age");
            Element gender = student.element("gender");
            System.out.println("名字是:" + name.getText() + "/t" + "性别是:" + age.getText() + "/t" + "年龄是:" + age.getText());
        }
    }

    //    指定读取第一个学生的信息
    @Test
    public void readOne() throws DocumentException {
        //得到一个解析器
        SAXReader reader = new SAXReader();
        //看document的对象属性
        Document document = reader.read(new File("src/main/java/students.xml"));
        Element rootElement = document.getRootElement();
        //拿到根节点下的学生的信息
        List<Element> students = rootElement.elements("student");
        Element student = (Element) students.get(0);
        //输出学生的信息
        Element name = student.element("name");
        Element age = student.element("age");
        Element gender = student.element("gender");
        System.out.println(name.getText() + "\t" + age.getText() + "\t\t" + gender.getText());
        System.out.println(student.attributeValue("id"));

    }

    //添加一个学生的信息


    @Test
    public void Student1() throws DocumentException {
        ///得到一个解析器
        SAXReader Reader = new SAXReader();
        //返回一个dom对象
        Document document = Reader.read(new File("src/main/java/students.xml"));
        //拿到根元素
        Element rootElement = document.getRootElement();
        //得到学生信息
        List<Element> elements = rootElement.elements();
        for (Element student : elements) {
            //得到student下的元素
            Element name = student.element("name");
            System.out.println(name.getText());
        }
    }


    //添加节点
    @Test
    public void addStudent() throws DocumentException, IOException {
        //得到解析器
        SAXReader saxReader = new SAXReader();
        //得到一个由文件解析成的dom对象,读取文件
        Document read = saxReader.read(new File("src/main/java/students.xml"));
        //得到dom对象的根元素
        Element rootElement = read.getRootElement();
        //创建一个学生对象
        Element newStu = DocumentHelper.createElement("student");
        //给元素添加属性
        newStu.addAttribute("id", "04");
        //给学生对象赋予子元素
        Element newStu_name = DocumentHelper.createElement("name");
        Element newStu_age = DocumentHelper.createElement("age");
        Element newStu_gender = DocumentHelper.createElement("gender");
        Element newStu_resume = DocumentHelper.createElement("resume");
        newStu_name.setText("宋江");
        newStu_age.setText("23");
        newStu_gender.setText("男");
        newStu_resume.setText("大好人");
        //把子元素挂载到newStu上
        newStu.add(newStu_name);
        newStu.add(newStu_age);
        newStu.add((newStu_gender));
        newStu.add(newStu_resume);
        //再把newStu加入到根节点
        rootElement.add(newStu);
        //直接输出会有中文乱码
        OutputFormat output = OutputFormat.createPrettyPrint();
        output.setEncoding("utf-8");
        //将xml文件更新
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/main/java/students.xml"));
        xmlWriter.write(read);
        xmlWriter.close();
    }
    //删除节点
    @Test
    public void delete() throws DocumentException, IOException {
        //得到解析器
        SAXReader saxReader = new SAXReader();
        //得到一个由文件解析成的dom对象,读取文件
        Document read = saxReader.read(new File("src/main/java/students.xml"));
        //得到dom对象的根元素
        Element rootElement = read.getRootElement();
        //找到根元素下的第一个学生
        Element student = (Element)rootElement.elements("student").get(0);
        //找到该元素的父元素,然后用父元素删除子元素
        student.getParent().remove(student);
        //更新xml内容
        //直接输出会有中文乱码
        OutputFormat output = OutputFormat.createPrettyPrint();
        output.setEncoding("utf-8");
        //将xml文件更新
        XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/main/java/students.xml"));
        xmlWriter.write(read);
        xmlWriter.close();
    }
}


http://www.kler.cn/news/355196.html

相关文章:

  • 买卖股票的最佳时机(动态规划方法总结)
  • 麒麟系统mate_indicators进程占用内存资源高
  • 云岚到家 支付实现
  • 字节跳动基础架构消息队列团队论文入选云计算领域顶会 SoCC 2024
  • 数据库中的JSON数据类型
  • 【MySQL】入门篇—基本数据类型:简单的查询与过滤
  • Java多线程编程:深入理解与实践
  • SSL卸载(SSL流量管理)
  • Linux go语言配置
  • 嵌入式C语言面试相关知识——结构体和联合体
  • 模块编译成功,但是python运行找不到依赖库Nomodule named ‘ ‘
  • 定期备份MYSQL数据库(Linux)
  • 2024 蚂蚁SEO蜘蛛池对网站收录的帮助
  • 机器学习核心:监督学习与无监督学习
  • Ansible Roles与优化
  • Java开发中知识点整理
  • 【vue】解决vue Admin Template打包是空白的页面
  • wiki搭建
  • 爬虫逆向-js进阶(续写,搭建网站)
  • 深度学习架构:MOE架构