XML 教程【一文彻底搞懂XML解析】

编程入门 行业动态 更新时间:2024-10-09 02:27:42

XML 教程【<a href=https://www.elefans.com/category/jswz/34/1769690.html style=一文彻底搞懂XML解析】"/>

XML 教程【一文彻底搞懂XML解析】

文章目录

  • 1. xml入门
    • 1.1 xml新建
    • 1.1 文档声明
    • 1.2 元素
    • 1.3 属性
    • 1.4 CDATA节
    • 1.5 转义字符
    • 1.6 格式正确的XML
  • 2. dom4j
    • 2.1 加载xml文件
    • 2.2 遍历xml指定元素
    • 2.3 读取指定xml元素
    • 2.4 获取属性
    • 2.5 dom4j增删改
    • 2.6 作业

1. xml入门

1.1 xml新建




1.1 文档声明

  1. XML声明放在XML文档的第一行
  2. XML声明由以下几个部分组成:
  3. version=“1.0” 文档符合XML1.0规范, 我们学习1.0
  4. encoding=“utf-8” 文件字符编码

1.2 元素

  1. 空标签 <a/>是允许的;
  2. <student> 标签/元素/节点, 叫法是一样的;
  3. <Email>和<email>是两个不同的标记. 区分大小写;
  4. 标签不能嵌套;
  5. 标签不能以数字开头;
  6. 不能包含空格, 可用下划线分隔;
  7. 不能包含冒号 :

1.3 属性

  1. id = ‘1’ 单引号也是正确写法;
  2. 如果属性值有" 则用’包括, 比如 id=“00’1”; 如果属性值有’ 则用"包括, 比如 id=‘00"1’
  3. 属性名在同一个元素标记中只能出现一次<student id=‘01’ id=‘02’>是错误的
  4. 属性值不能包含 &字符, 可以包含其它特殊字符

1.4 CDATA节

如果希望把某些字符串, 当作普通文本, 使用CDATA包括

    <!--如果希望把某些字符串, 当作普通文本, 使用CDATA包括--><![CDATA[<student id="002"><name>mary</name><age>22</age><gender>女</gender></student>]]>

1.5 转义字符

转义符符号
&lt;<
&gt;>
&amp;&
&quot;"
&apos;'

1.6 格式正确的XML

  1. XML声明语句<?xml version=“1.0” encoding=“utf-8”?>
  2. 必须有且仅有一个根元素
  3. 标记大小写
  4. 属性值用引号
  5. 标记成对
  6. 标记记得关闭
  7. 元素正确嵌套

2. dom4j

2.1 加载xml文件

  1. 项目下新建lib[或libs]文件夹, 将dom4j-1.6.1.jar包放入
  2. 右键该jar包, 点击Add As Library, 确定
  3. DeBug

代码





2.2 遍历xml指定元素

2.3 读取指定xml元素

/*指定读取第一个学生的信息*/@Testpublic void readOne() throws DocumentException {//获取解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/students.xml"));//1.获取rootElementElement rootElement = document.getRootElement();//2.获取第一个学生Element student = (Element) rootElement.elements("student").get(0);//3.遍历student元素的节点并输出各个子节点的Text属性Element name = student.element("name");Element age = student.element("age");Element gender = student.element("gender");System.out.println("name=" + name.getText() + " age=" + age.getText() + " gender=" + gender.getText());//4.获取指定 student元素/节点 的属性值System.out.println("id=" + student.attributeValue("id"));}

2.4 获取属性

attributeValue

获取指定 student元素/节点 的属性值
System.out.println("id=" + student.attributeValue("id"));

2.5 dom4j增删改

  • 添加
    /*添加一个学生节点到xml文件中*/@Testpublic void add() throws DocumentException, IOException {//1.拿到解析器SAXReader reader = new SAXReader();//2.指定解析哪个Xml文件Document document = reader.read(new File("src/students.xml"));//3.首先创建一个学生节点对象Element student = DocumentHelper.createElement("student");// 创建name, age, gender子节点Element student_name = DocumentHelper.createElement("name");Element student_age = DocumentHelper.createElement("age");Element student_gender = DocumentHelper.createElement("gender");// 如何给元素添加属性student.addAttribute("id", "003");student_name.setText("威震天");student_age.setText("40000");student_gender.setText("机器族");//4.把三个子元素添加到student节点下student.add(student_name);student.add(student_age);student.add(student_gender);// 再把student节点挂载到rootElement下document.getRootElement().add(student);// 直接输出会中文乱码OutputFormat outputFormat = OutputFormat.createPrettyPrint();outputFormat.setEncoding("utf-8");//5.使用到IO编程 文件字节输出流XMLWriter Writer =new XMLWriter(new FileOutputStream(new File("src/students.xml")), outputFormat);Writer.write(document);Writer.close();}
  • 删除
    /*删除元素 删除最后一个学生信息*/@Testpublic void delete() throws DocumentException, IOException {//1.拿到解析器SAXReader reader = new SAXReader();//2.指定解析哪个Xml文件Document document = reader.read(new File("src/students.xml"));//3.找到最后一个学生节点Element student = (Element) document.getRootElement().elements("student").get(2);//拿到父节点 删除元素student.getParent().remove(student);//直接输出会中文乱码OutputFormat output = OutputFormat.createPrettyPrint();output.setEncoding("utf-8");//更新Xml文件XMLWriter writer = new XMLWriter(new FileOutputStream(new File("src/students.xml")), output);writer.write(document);writer.close();}
  • 修改
/*修改元素(所有元素的age+3)*/@Testpublic void update() throws DocumentException, IOException {//1.拿到解析器SAXReader reader = new SAXReader();//2.指定解析哪个Xml文件Document document = reader.read(new File("src/students.xml"));//3.拿到所有的student元素List<Element> students = document.getRootElement().elements("student");//遍历for (Element student : students) {//设置所有学生的年龄Element age = student.element("age");age.setText(Integer.parseInt(age.getText()) + 3 + "");}//直接输出会中文乱码OutputFormat output = OutputFormat.createPrettyPrint();output.setEncoding("utf-8");//4.IO流 文件字节输出流XMLWriter writer = new XMLWriter(new FileOutputStream(new File("src/students.xml")), output);writer.write(document);writer.close();}

2.6 作业

//1.拿到解析器SAXReader reader = new SAXReader();//2.指定解析books.xml文件Document document = reader.read(new File("src/books.xml"));//拿到rootElement下的 book元素List<Element> books = document.getRootElement().elements("book");ArrayList<Book> list = new ArrayList<>();Book book1 = null;int id = 0;String name = "";String author = "";double price = 0;//循环遍历 book节点for (Element book : books) {id = Integer.parseInt(book.attributeValue("id"));name = book.element("name").getText();author = book.element("author").getText();price = Double.parseDouble(book.element("price").getText());book1 = new Book(id, name, author, price);list.add(book1);}for (int i = 0; i < list.size(); i++) {Book book = list.get(i);System.out.println("编号 " + book.getId() + "\t\t作者 " + book.getAuthor() +"\t\t书名 " + book.getName() + "\t\t价格 " + book.getPrice());}

更多推荐

XML 教程【一文彻底搞懂XML解析】

本文发布于:2024-02-06 08:14:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1747684.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:一文   教程   XML

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!