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

day25-XML

1.xml

1.1概述【理解】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2语法规则【应用】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5DTD约束【理解】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.6schema约束【理解】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4xml解析【应用】

在这里插入图片描述
在这里插入图片描述

  • 概述

    xml解析就是从xml中获取到数据

  • 常见的解析思想

    DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看做成对应的对象。
    会把xml文件全部加载到内存,在内存中形成一个树形结构,再获取对应的值

    在这里插入图片描述

  • 解析的准备工作

    1. 我们可以通过网站:https://dom4j.github.io/ 去下载dom4j

      今天的资料中已经提供,我们不用再单独下载了,直接使用即可

    2. 将提供好的dom4j-1.6.1.zip解压,找到里面的dom4j-1.6.1.jar

    3. 在idea中当前模块下新建一个libs文件夹,将jar包复制到文件夹中

    4. 选中jar包 -> 右键 -> 选择add as library即可

  • 需求

    • 解析提供好的xml文件
    • 将解析到的数据封装到学生对象中
    • 并将学生对象存储到ArrayList集合中
    • 遍历集合
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 代码实现
<?xml version="1.0" encoding="UTF-8" ?>
<students><!--第一个学生信息--><student id="1"><name>张三</name><age>23</age></student><!--第二个学生信息--><student id="2"><name>李四</name><age>24</age></student></students>
public class Student {private String id;private String name;private int age;public Student() {}public Student(String id, String name, int age) {this.id = id;this.name = name;this.age = age;}/*** 获取* @return id*/public String getId() {return id;}/*** 设置* @param id*/public void setId(String id) {this.id = id;}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return age*/public int getAge() {return age;}/*** 设置* @param age*/public void setAge(int age) {this.age = age;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + "}";}
}
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) throws DocumentException {ArrayList<Student> students = new ArrayList<>();//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.下面一层一层解析//4.获取根标签Element rootElement = document.getRootElement();//5.获取根标签的子标签List<Element> elements = rootElement.elements();for (Element element : elements) {//6. 获取里面的内容//获取属性和属性值Attribute id = element.attribute("id");String idValue = id.getText();//或者String idValue_ = element.attributeValue("id");//7.获取对应的标签和标签值Element name = element.element("name");String nameValue = name.getText();Element age = element.element("age");int ageValue =Integer.parseInt(age.getText());//8.把Student对象添加到集合中Student student = new Student(idValue, nameValue, ageValue);students.add(student);}System.out.println(students);//[Student{id = 1, name = 张三, age = 23}, Student{id = 2, name = 李四, age = 24}]}
}

2.Xpath

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
jaxen包下载

<?xml version="1.0" encoding="UTF-8" ?><students><!--第一个学生信息--><student id="1"><name>张三</name><age>23</age></student><!--第二个学生信息--><student id="2"><name>李四</name><age>24</age></student></students>

在这里插入图片描述

  • selectNodes

    public class Main {public static void main(String[] args) throws DocumentException {ArrayList<Student> students = new ArrayList<>();//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.利用xpath方式快速检索List<Node> nodes = document.selectNodes("/students/student/name");for (Node node : nodes) {System.out.println(node.getText());//张三//李四}}
    }
    
  • selectSingleNode:如果有多个,则只获取第一个

    public class Main {public static void main(String[] args) throws DocumentException {//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.利用xpath方式快速检索List<Node> nodes = document.selectNodes("/students/student/name");for (Node node : nodes) {System.out.println(node.getText());//张三//李四}}
    }
    

在这里插入图片描述

public class Main {public static void main(String[] args) throws DocumentException {//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.利用xpath方式快速检索//首先获取根节点Element rootElement = document.getRootElement();//从根节点这个相对路径获取下面的节点Node node = rootElement.selectSingleNode("./student/name");System.out.println(node.getText());//张三}
}

在这里插入图片描述
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?><students><!--第一个学生信息--><student id="1"><a><name>张三</name></a><age>23</age></student><!--第二个学生信息--><student id="2"><name>李四</name><age>24</age></student><name>哈哈</name></students>
public class Main {public static void main(String[] args) throws DocumentException {//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.利用xpath方式快速检索List<Node> nodes = document.selectNodes("//name");for (Node node : nodes) {System.out.println(node.getText());//张三//李四//哈哈}List<Node> nodes1 = document.selectNodes("//student/name");for (Node node : nodes1) {System.out.println(node.getText());//李四}List<Node> nodes2 = document.selectNodes("//student//name");for (Node node : nodes2) {System.out.println(node.getText());//张三//李四}}
}

在这里插入图片描述

  • //@属性名:查找的是属性
  • //元素[@属性名]:查找指定属性的标签
<?xml version="1.0" encoding="UTF-8" ?><students><!--第一个学生信息--><student id="1"><a><name>张三</name></a><age>23</age></student><!--第二个学生信息--><student id="2"><name>李四</name><age>24</age></student><name>哈哈</name></students>
public class Main {public static void main(String[] args) throws DocumentException {//1.创建解析器对象SAXReader saxReader = new SAXReader();//2.利用解析器去读取xml文件,并返回文档对象File file = new File("hello.xml");Document document = saxReader.read(file);//3.查属性List<Node> nodes = document.selectNodes("//@id");for (Node node : nodes) {System.out.println(node.getText());//1//2}List<Node> nodes1 = document.selectNodes("//student[@id]");System.out.println(nodes1.size());//2for (Node node : nodes1) {System.out.println(node.getName());//student//student}List<Node> nodes2 = document.selectNodes("//student[@id='1']");System.out.println(nodes2.size());//1for (Node node : nodes2) {System.out.println(node.getName());//student}}
}

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/361853.html

相关文章:

  • Mixly 开启WIFI AP UDP收发数据
  • OCR图片转Excel表格:没结构化的弊端
  • 查看所用数据库的版本
  • U盘感染病毒,不必急于扔掉!教你如何有效清除U盘中的病毒
  • 新手小白也能玩转跨境电商:从零到精通的操作流程
  • 川北医学院与爱尔眼科医院集团签署战略合作协议共谋医学发展新篇章
  • 利用映射算子打印菱形
  • 亚信安全正式推出5G专网安全测试服务 圆满完成核电客户5G项目落地
  • 第二十五章CSS中的技巧(导航栏、下拉列表)
  • 大话设计模式解读01-简单工厂模式
  • 35python数据分析numpy基础之setdiff1d求两个数组的差集
  • JVM 指针压缩
  • 时序预测 | Matlab灰色-马尔科夫预测
  • 代码界的奥斯卡:SpringBoot测试的艺术与科学
  • 安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案
  • Python | 平均绩点
  • 2024年有什么值得入手的5G长期套餐大流量卡推荐?大流量手机卡入手指南(超4款正规手机卡实测总结)
  • 《尚上优选》项目Bug记录
  • Flutter 中的 PopupMenuTheme 小部件:全面指南
  • uni-app的网络请求库封装及使用(同时支持微信小程序)
  • 力扣524. 通过删除字母匹配到字典里最长单词
  • 【代码随想录】【算法训练营】【第27天】 [39]组合总和 [40] 组合总和II [131]分割回文串
  • 解决 git 命令 Problem with the SSL CA cert (path? access rights?)
  • 详解:重庆耶非凡的选品师项目有哪些优势?
  • DSP28335模块配置模板系列——GPIO配置模板
  • 【SringBoot项目中MyBatis-Plus多数据源应用实践】
  • Android 图表开发开源库 MPAndroidChart 使用总结
  • 手机号脱敏
  • java基础篇(1)
  • 2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第三阶段任务书