李优秀 发表于 2024-10-20 12:05:25

XML的使用

一.xml

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: XML的使用