day074:XML、XML的解析

news2024/9/23 15:32:14

目录

一、XML

1.什么是XML

2.XML作用

3.XML语法规则

4.XML文件代码示例

二、解析XML文件

1.解析XML

2.常用的解析思想

(1)DOM思想

(2)图解

3.XML解析工具


一、XML

1.什么是XML

XML(EXtensible Markup Language):是一种可扩展的标记语言

  • 标记语言:通过标签来描述数据的语言
  • 可扩展:标签的名字可以自定义

2.XML作用

  • 用于进行存储数据和传输数据
  • 作为软件的配置文件

3.XML语法规则

  • XML文件的后缀名为xml
  • 文档声明必须是第一行第一列
    • 文档声明格式:<?xml version="1.0" encoding="UTF-8" standalone="" ?>
    • version:该属性是必须存在的,它的值固定是1.0
    • encoding:选择字符编码表;该属性可不写
    • standalone:描述该xml文件是否依赖其他的xml文件,取值为yes或no。该属性可不写
  • 特殊字符:
    • &lt;        <   小于号
    • &gt;       >   大于号
    • &amp;  &   和号
    • &apos;  '    单引号
    • &quot;  "    引号
  • XML文件中可以存在CDATA区,它相当于一个文本,可以在里面直接写内容
    • CDATA区格式:<![CDATA[内容]]>

4.XML文件代码示例

<?xml version="1.0" encoding="UTF-8" ?>
<!--注释:XML文件的创建:选择File
    XML文件的后缀必须是.xml-->

<!--本xml文件用来描述多个学生的信息-->
<students>
    <!--    第一个学生的信息-->
    <student id="1">
        <name>张三</name>
        <age>23</age>
        <!--        小于号的使用-->
        <info>学生&lt;老师</info>
        <!--        CDATA区的使用:相当于一个文本,可以直接在里面写内容-->
        <message><![CDATA[我叫张三,年龄是23岁,老师 > 学生,学生 < 老师]]></message>
    </student>
    <!--    第二个学生的信息-->

    <student id="2">
        <name>李四</name>
        <age>24</age>

    </student>

</students>

二、解析XML文件

1.解析XML

就是获取xml文件里的每一个值

2.常用的解析思想

(1)DOM思想

DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看成对应的对象。

Document对象:整个xml文档

Element对象:所有标签

Attribute对象:所有属性

Text对象:所有文本内容(标签体:即标签里的内容)

(其中Element对象、Attribute对象、Text对象有一个共同的父类:Node对象

(2)图解

当写完xml文件后,整个文档就会形成一个Document对象,开始获取里面的内容:先获取根标签students,再获取子标签student,再获取子标签内的属性id,标签name、age,标签体:即标签里的内容。

3.XML解析工具

常见的解析工具有JAXP、JDOM、DOM4J、PULL

dom4j-1.6.1.jar包导入方式:

 

利用DOM4J解析,代码示例:
(1)student.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--注释:XML文件的创建:选择File
    XML文件的后缀必须是.xml-->

<!--本xml文件用来描述多个学生的信息-->
<students>
    <!--    第一个学生的信息-->
    <student id="1">
        <name>张三</name>
        <age>23</age>
        <!--        小于号的使用-->
        <info>学生&lt;老师</info>
        <!--        CDATA区的使用:相当于一个文本,可以直接在里面写内容-->
        <message><![CDATA[我叫张三,年龄是23岁,老师 > 学生,学生 < 老师]]></message>
    </student>
    <!--    第二个学生的信息-->

    <student id="2">
        <name>李四</name>
        <age>24</age>

    </student>


</students>

(2)Student类

package myXMLDemo_01;

public class Student {
    private  String id;
    private  String name;
    private  int age;

    public Student() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Student(String id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

(3)DOM4J解析student.xml文件

public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //获取一个解析器
        SAXReader saxReader = new SAXReader();
        //利用解析器把xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("myXML\\xml\\ student.xml"));//文件路径最好不要手敲,直接复制粘贴
        //获取根标签
        Element rootElement = document.getRootElement();
        //通过根标签获取所有子标签
        //elements():可以获取调用者所有的子标签,会把所有的子标签都放到一个集合中
        //List list = rootElement.elements();如果elements()里面不传入参数,则获取所有标签
        //如果elements()里面传入标签名,则获取指定标签名的标签
        List<Element> studentElements = rootElement.elements("student");

        //用来装学生对象的集合
        ArrayList<Student> list = new ArrayList<>();


        //遍历集合得到每一个子标签
        for (Element element : studentElements) {
            //获取id这个属性
            Attribute attribute = element.attribute("id");
            //获取id的属性值
            String id = attribute.getValue();

            //获取name标签
            //element("标签名"):获取调用者指定的子标签
            Element nameElement = element.element("name");
            //获取这个标签的标签体内容
            String name = nameElement.getText();

            //获取age标签
            Element ageElement = element.element("age");
            String age = ageElement.getText();


            //System.out.println(id);
            //System.out.println(name);
            //System.out.println(age);


            Student s = new Student(id, name, Integer.parseInt(age));
            list.add(s);

        }
        //遍历操作
        for (Student student : list) {
            System.out.println(student);
        }

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/32576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【已解决】CentOS7等linux系统时区时间不对显示误差8小时

文章目录问题解决处理时区问题date查看时间、时区timedatectl查看时间、时区查看localtime设置时区处理时间问题问题 中国使用的是东八区上海时间&#xff0c;而linux服务器&#xff0c;一般默认是0时区UTC&#xff0c;所以需要将时区改为东八区CST将时区改为东八区后&#xf…

机器学习-决策树算法

机器学习-基础知识 机器学习-线性回归 机器学习-逻辑回归 机器学习-聚类算法 机器学习-决策树算法 机器学习-集成算法 机器学习-SVM算法 文章目录1. 决策树算法1.1. 什么是决策树/判定树1.2. 决策树归纳算法1.3. 熵概念1.4. 具体算法1.5. 决策树剪枝1.6. 连续值与缺失值处理1.6…

MCE | 正确认识阿尔茨海默病

什么是阿尔茨海默病 (Alzheimer Disease, AD)&#xff1f; 1907 年德国神经病理学家阿尔茨海默 (Alois Alzheimer) 仔细描述了一名具有进行性痴呆表现的 51 岁妇女 (Auguste Deter) 的症状&#xff1a; “她的记忆力严重受损。如果向她显示了对象&#xff0c;她会正确地命名它…

还在调API写所谓的AI“女友”,唠了唠了,教你基于python咱们“new”一个(深度学习)

文章目录前言停用词闲聊语料基础知识词的表示表达one-hot编码词嵌入大致原理实现简单版复杂版如何训练转换后的形状RNN循环网络RNNRNN投影图RNN是三维立体的LSTM&GRU构建数据配置数据集准备分词划分数据集加载模型搭建基本概念Encoder搭建DecoderAttention机制decoder与bea…

赫夫曼树赫夫曼编码的创建

目录基础知识点最优二叉树如何构造赫夫曼树赫夫曼编码编码与压缩文件代码结构体设计创建赫夫曼树创建构建赫夫曼编码基础知识点 赫夫曼树又称为最优树&#xff0c;是一种带权路径长短最短的树&#xff0c;有着广泛的应用。 最优二叉树 我们给出路径和路径长度的概念。从树的…

盘点面试常见的设计类算法问题

设计问题也是一种很重要的考察类型&#xff0c;特征是整体难度不大&#xff0c;但是要求结构合理、复用性好、考虑周全&#xff0c;代码规范等等。有些面试官不喜欢烧脑的动态规划等问题&#xff0c;就喜欢设计题&#xff0c;笔者曾经在面试微博和猿辅导都遇到过类似的问题。这…

【操作系统】2.1 进程与线程总结

2.1.1 操作系统之进程的定义、特征、组成、组织 2.1.1 操作系统之进程的定义、特征、组成、组织_StudyWinter的博客-CSDN博客 进程由程序段、数据段、进程控制块&#xff08;PCB&#xff09;三部分组成。 进程是进程实体的运行过程&#xff0c;是系统进行资源分配和资源调度的…

隆化的大米排之首 国稻种芯·中国水稻节:河北承德十大特产

隆化的大米排之首 国稻种芯中国水稻节&#xff1a;河北承德十大特产 中新网河北新闻10月8日电 (张桂芹 王思明) 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康大会报道&#xf…

python基础项目实战-俄罗斯方块

一、俄罗斯方块游戏设计分析: 俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知。俄罗斯方块游戏基本规则是油4个小方块组成的7种不同的规则图形…

DevOps持续部署的关键要素

当有版本通过持续集成流水线进行构建之后&#xff0c;就可以将其部署至某个具体的环境&#xff0c;这就需要自动化部署技术&#xff0c;将这个自动化部署和持续集成流水线连接起来&#xff0c;就可实现持续部署。如图1所示&#xff0c;实现持续部署的前提是至少拥有一条完整的自…

mipi phy理解

MIPI 接口广泛用于摄像头,和显示部分;PHY 属于 MIPI 接口的最底层部分,也就是物理层,直接涉及到物理连线,信号传输等等,要搞清楚 MIPI 的数据传送,那么从 PHY 入手了解,是一个不错的选择;在 PHY 上,只负责定义数据物理层的收发标准; MIPI 的 PHY 分为了 3 种: D-P…

BartForConditionalGeneration的使用细节

输入到 BartForConditionalGeneration 类的各个参数是什么意思&#xff1f; decoder_input_ids 是必须要以 <s> 开头的。这个参数可以自己生成然后传入到模型中&#xff0c;也可以交由代码自己生成&#xff08;一般会根据label右移一位再补0&#xff09; case 1&#x…

ImmunoChemistry艾美捷细胞内GSH测定试剂盒方案

用ImmunoChemistry艾美捷细胞内GSH测定评估细胞内谷胱甘肽水平的变化。这种全细胞谷胱甘肽测定采用专有的硫醇敏感染料ThioBright™ 绿色&#xff0c;以监测游离形式谷胱甘肽&#xff08;即GSH&#xff09;浓度的相对变化。通过流式细胞术分析荧光信号。 谷-胱-甘肽&#xff0c…

​DPDK 高效原因初探

Linux处理Packets主逻辑 系统接受数据包的过程 当网卡收到第一个包时候,通过DMA把这个包发送给接受队列(rx)系统通过中断的方式通知新数据包的到来,同时也需要把数据包传递给内核的buffer(每个包一个buffer,sk_buff struct).一个数据包到来会触发多次的中断&#xff0c;内核处…

.net-----语言集成查询LINQ

语言集成查询LINQ前言相关语言要素初始值设定项匿名类型相关语言要素Lambda表达式扩展方法LINQ的概念和基本操作集成语言查询LINQLINQ查询操作标准查询运算符数据排序数据筛选数据投影数据分组联接运算数据分区限定运算聚合运算集合运算生成运算元素操作串联运算相等运算数据类…

【新知实验室 基于WEB的实时音视频(TRTC)案例搭建】

文章目录1. 实时音视频&#xff08;TRTC&#xff09;1.1 实时音视频(TRTC)概述1.2 实时音视频(TRTC)功能集成1.2.1 含 UI 组件集成方案1.2.2 无 UI 组件集成方案1.3 实时音视频(TRTC)架构2. 使用体验2.1 注册腾讯云2.2 申请实时音视频(TRTC)应用2.3 下载SDK的Demo源码2.4 获取 …

前后端结合解决Excel海量公式计算的性能问题

背景 在数据密集的业务领域&#xff0c;尤其是金融&#xff0c;保险&#xff0c;税务等行业中&#xff0c;经常需要利用Excel模型&#xff0c;来对业务进行分析和处理。例如&#xff1a; 1.金融投资&#xff1a; 根据模型进行估值计算&#xff0c;并对投资风险进行评估&#x…

降本增效这九个月,爱奇艺从“穿越火线”,到“冷静增长”

在互联网行业一致宣称降本、提质、增效的小周期里&#xff0c;爱奇艺已经把这个趋势彻底吃透&#xff0c;展现出成熟的一面。 11月22日美股盘前&#xff0c;爱奇艺发布了2022年第三季度业绩&#xff0c;连续三个季度运营盈利&#xff0c;而且当季净增会员数超千万&#xff0c;…

iwebsec靶场 数据库漏洞通关2-Redis数据库漏洞

iwebsec靶场的redis漏洞为未授权漏洞&#xff0c;如下所示。 一、Redis未授权漏洞原因 那么这个未授权漏洞的原理是什么呢&#xff1f;Redis 默认情况下&#xff0c;会绑定在 0.0.0.0:6379&#xff0c;如果没有进行采用相关的策略&#xff0c;比如添加防火墙规则避免其他非信任…

PreScan快速入门到精通第三十九讲基于车道线识别传感器的车道保持辅助算法Demo讲解

车道保持辅助系统介绍: 什么是车道保持辅助系统? 疲劳和分心是无意中偏离车辆行驶车道线的最常见原因。车道保持辅助系统主动帮助驾驶者将其车辆保持在车道内,避免或者降低事故的发生。 车道保持辅助系统使用一个前置的摄像头,一般安装在车内后视镜附近,用来检测车辆前方…