XML(eXtensible Markup Language)

目录

为什么需要XML?

一 XML语法 

1.文档声明

2.元素

语法:

 3.属性

 4.注释

5.CDATA节

二 树结构

三 转义字符

四 DOM4J

1.XML解析技术

2.dom4j介绍

3.dom4j基本使用


XML 指可扩展标记语言(eXtensible Markup Language)。

XML 被设计用来传输和存储数据,不用于表现和展示数据,HTML 则用来表现数据。

为什么需要XML?

● 解决程序间数据传输的问题:=> 目前多用json替代

比如 qq 之间的数据传送,用 xml 格式来传送数据,具有良好的可读性,可维护性。

● xml 可以做配置文件

xml 文件做配置文件可以说非常的普遍,比如我们的 tomcat 服务器的 server.xml ,web.xml

● xml 可以充当小型的数据库 => 程序自己的数据格式存放

xml 文件做小型数据库,也是不错的选择,我们程序中可能用到的数据,如果放在数据库 中读取不合适(因为你要增加维护数据库工作),可以考虑直接用 xml 来做小型数据库 ,而且 直接读取文件显然要比读取数据库快

一 XML语法 

  • 文档声明
  • 元素
  • 属性
  • 注释
  • CDATA区,特殊字符

1.文档声明

<?xml version="1.0" encoding="utf-8"?>

XML 声明放在 XML 文档的第一行 , 由以下几个部分组成:

1.version - -文档符合 XML1.0 规范   2.encoding - -文档字符编码,比如"utf-8"

2.元素

<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>
</note>

语法:

1.每个 XML 文档必须有且只有一个根元素

2.根元素是一个完全包括文档中其他所有元素的元素。

3.根元素的起始标记要放在所有其他元素的起始标记之前。

4.根元素的结束标记要放在所有其他元素的结束标记之后

5.XML 元素指 XML 文件中出现的标签,一个标签分为开始标签和结束标签,一个标签 有如下几种书写形式 包含标签体:www.sohu.cn 不含标签体的:, 简写为: <a/>

6.一个标签中也可以嵌套若干子标签。但所有标签必须合理的嵌套,绝对不允许交叉嵌套 

元素命名规则:

 区分大小写,例如<p/>,<P/>和是两个不同的标记。

 不能以数字开头。

 不能包含空格。

 名称中间不能包含冒号(:)。

 如果标签单词需要间隔,建议使用下划线 比如 <book_title>h</book_title>

 3.属性

<student id="200"><name>mary</name><age>18</age><gender>女</gender>
</student>
  •  属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔;有",用'分隔)
  • 一个元素可以有多个属性,它的基本格式为:<元素名 属性名="属性值">
  • 特定的属性名称在同一个元素标记中只能出现一次
  • 属性值不能包括& 字符

 4.注释

<!-- 注释 -->
  •  注释内容中不要出现- -
  • 不要把注释放在标记中间
  • 注释不能嵌套
  • 可以在除标记以外的任何地方放注释

5.CDATA节

 有些内容不想让解析引擎执行,而是当作原始内容处理(即当做普通文本),可 以使用 CDATA 包括起来,CDATA 节中的所有字符都会被当作简单文本,而不是 XML 标记

<![CDATA[
这里可以把你输入的字符原样显示,不会解析 xml
]]>
  •  可以输入任意字符(除]]>外)
  • 不能嵌套

二 树结构

XML 文档必须包含根元素。该元素是所有其他元素的父元素。

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。

所有的元素都可以有子元素:

<bookstore><book category="COOKING"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="CHILDREN"><title lang="en">Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title lang="en">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book>
</bookstore>

三 转义字符

对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理

四 DOM4J

DOM4J文档

1.XML解析技术

  • 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析
  • document 对象表示的是整个文档(可以是 html 文档,也可以是 xml)

早期 JDK 为我们提供了两种 xml 解析技术: DOM 和 Sax 

  1. dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己 语言的特点进行实现。 Java 对 dom 技术解析也做了实现
  2. sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它是以类似事件机制通过回调告诉用户当前正在解析的内容。 是一行一行的读 取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml时在性能上优于 Dom 解析

第三方的XML解析技术

  1. jdom在dom基础上进行了封装
  2. dom4j又对jdom 进行了封装 ***
  3. pull主要用在Android手机开发,跟sax类似 都是事件机制解析xml文件

2.dom4j介绍

  •  Dom4j 是一个简单、灵活的开放源代码的库(用于解析/处理 XML 文件)。Dom4j 是由早期 开发 JDOM 的人分离出来而后独立开发的。

  •  与 JDOM 不同的是,dom4j 使用接口和抽象基类,虽然 Dom4j 的 API 相对要复杂一些, 但它提供了比 JDOM 更好的灵活性。
  •  Dom4j 是一个非常优秀的 Java XML API,具有性能优异、功能强大和极易使用的特点。 现在很多软件采用的 Dom4j。
  •  使用 Dom4j 开发,需下载 dom4j 相应的 jar 文件

3.dom4j基本使用

    public static void getDocument() throws DocumentException {========================读取========================//读取XML文件,获取document对象SAXReader reader = new SAXReader();//创建解析器Document document1 = reader.read(new File("src\\com\\web\\helloXML.xml"));//解析XML形式文本,获取document对象String xml="<members></members>";Document document2 = DocumentHelper.parseText(xml);//主动创建document对象Document document3 = DocumentHelper.createDocument();Element root = document3.addElement("members");========================遍历=======================//1. 得到 rootElement, 你是 OOPElement rootElement = document.getRootElement();//2. 得到 rootElement 的 student ElementsList<Element> students = rootElement.elements("student");for (Element student : students) {//element 就是 Student 元素/节点//获取 Student 元素 的 name ElementElement name = student.element("name");Element age = student.element("age");Element resume = student.element("resume");Element gender = student.element("gender");System.out.println("学生信息= " + name.getText() + " " + age.getText() +" " + resume.getText() + " " + gender.getText());}=======================CRUD=======================createELement() addAttribute() add() remove() setText()}

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

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

相关文章

Killing LeetCode [83] 删除排序链表中的重复元素

Description 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 Intro Ref Link&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ Difficulty&#xff1a;Easy Tag&am…

全面讲解最小二乘法

常见的最小二乘法我们就不多说了&#xff0c;下面主要介绍一下最小二乘法的一些先进方法。 正则化的最小二乘法 在使用常见的最小二乘法进行回归分析时&#xff0c;常常会遇到过拟合的问题&#xff0c;也就是在训练数据集上表现的很好&#xff0c;但是在测试数据集上表现的很…

64位交叉编译器版本切换

操作系统版本 lkmaoubuntu:~$ cat /proc/version Linux version 5.6.18 (lkmaoubuntu) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #1 SMP Tue Jul 25 23:11:17 PDT 2023 lkmaoubuntu:~$ 64位 安装默认版本和gcc5版本。 sudo apt-get install gcc-aarch64-linux-g…

无涯教程-Perl - if...elsif...else语句函数

if 语句后可以跟可选的 elsif ... else 语句&#xff0c;这对于使用单个if ... elsif语句测试各种条件非常有用。 if...elsif...else - 语法 Perl编程语言中的 if ... elsif...else语句的语法是- if(boolean_expression 1) {# Executes when the boolean expression 1 is tr…

JavaScript 一段代码快速入门

仅记录了和c有所不同之处&#xff0c;其余类似。 一段简单代码 // 关注点分离&#xff0c;指html页面设计和javascript页面行为分离// 对象&#xff0c;键值对形式 const user {name: "gyf",age: 20,jobs: ["front-end", "engineer", 2, true…

智能卡通用安全检测指南 思度文库

范围 本标准规定了智能卡类产品进行安全性检测的一般性过程和方法。 本标准适用于智能卡安全性检测评估和认证。 规范性引用文件 下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件&#xff0c;仅注日期的版本适用于本文件。凡是不注日期的引用文件&#xff0c;…

STM32 CubeMX USB_CDC(USB_转串口)

STM32 CubeMX STM32 CubeMX 定时器&#xff08;普通模式和PWM模式&#xff09; STM32 CubeMX一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码实验效果 ![请添加图片描述](https://img-blog.csdnimg.cn/a7333bba478441ab950a66fc63f204fb.png)printf发…

Python自动化实战之使用Pytest进行API测试详解

概要 每次手动测试API都需要重复输入相同的数据&#xff0c;而且还需要跑多个测试用例&#xff0c;十分繁琐和无聊。那么&#xff0c;有没有一种方法可以让你更高效地测试API呢&#xff1f;Pytest自动化测试&#xff01;今天&#xff0c;小编将向你介绍如何使用Pytest进行API自…

【二】SPI IP核的使用

【一】SPI IP核使用&#xff1a;传送门 基于qsys通过spi外部总线协议对sd卡进行读写操作 一、实验平台与实验的目的&#xff1a; ​ 正点原子开拓者、芯片型号&#xff1a;EP4CE10F17C8&#xff1b;还需要一张sd卡。 ​ 该实验主要是利用SPI IP核驱动SD卡来实现读写实验&am…

一文学透设计模式

设计模式是什么&#xff1f; 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案&#xff0c;代表了解决一些问题的最佳实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 说白了&#xff0c;设计模式对于软件开发人员来说就…

K8S系列文章 之 容器网络基础 Docker0

什么是Docker0 使用ip addr命令看一下网卡&#xff1a; rootKitDevVps:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host…

优维低代码实践:对接数据

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

数据结构--单链表OJ题

上文回顾---单链表 这章将来做一些链表的相关题目。 目录 1.移除链表元素 2.反转链表 3.链表的中间结点 4.链表中的倒数第k个结点 5.合并两个有序链表 6.链表分割 7.链表的回文结构 8.相交链表 9.环形链表 ​编辑 10.环形链表II ​编辑 ​编辑 1.移除链表元素 思…

windows永久暂停更新

目录 1.winr,输入regedit打开注册表 2.打开注册表的这个路径: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白地方新建QWORD值命名为:FlightSettingsMaxPauseDays 3.双击FlightSettingsMaxPauseDays,修改里面的值为100000,右边基数设置…

Node.js |(一)Node.js简介及计算机基础 | 尚硅谷2023版Node.js零基础视频教程

学习视频&#xff1a;尚硅谷2023版Node.js零基础视频教程&#xff0c;nodejs新手到高手 文章目录 &#x1f4da;关于Node.js&#x1f407;为什么要学Node.js&#x1f407;Node.js是什么&#x1f407;Node.js的作用&#x1f407;Node.js下载安装&#x1f407;命令行工具&#x1…

ebay儿童书包产品CPC认证

儿童书包是一种能够盛放书本或者文具的包。现在的书包五花八门&#xff0c;以普通的布料或者是帆布等制成&#xff0c;有背带&#xff0c;包内一般分栏。一般分三种&#xff0c;背在身后的&#xff0c;挎在肩上的&#xff0c;轮式&#xff08;可以拖行&#xff09;的。 一、美国…

树,森林的遍历,以及其与二叉树遍历之间的关系

树和森林的的遍历 树的遍历 先根遍历 以下列树为演示 首先将树转化成二叉树&#xff08;孩子兄弟表示法&#xff1a;就是每个节点的左边连着它的左孩子&#xff0c;右边连自己右边的第一个兄弟&#xff09; 然后把转化为的二叉树进行先序遍历&#xff0c;中序遍历 进行先序…

再次斩获第一,文心3.5霸榜国内大模型

目录 1 什么是文心一言&#xff1f;2 体验与文心一言对话3 文心3.5霸榜国内大模型 1 什么是文心一言&#xff1f; 文心一言是百度全新一代知识增强大语言模型&#xff0c;文心大模型家族的新成员&#xff0c;能够与人对话互动&#xff0c;回答问题&#xff0c;协助创作&#xf…

【数据结构】Disruptor环形数组无锁并发框架阅读

Disruptor 是苹国外厂本易公司LMAX开发的一个高件能列&#xff0c;研发的初夷是解决内存队列的延识问顾在性能测试中发现竟然与10操作处于同样的数量级)&#xff0c;基于Disruptor开发的系统单线程能支撑每秒600万订单&#xff0c;2010年在QCn演讲后&#xff0c;获得了业界关注…

linux内网穿透应用场景有哪些?快解析有什么用处?

随着网络技术的不断发展&#xff0c;无论是工作上还是在生活中人们对网络的依赖和需求越来越高。Linux内网穿透作为一种创新的解决方案&#xff0c;为我们提供了无限可能。 首先我们了解一下Linux操作系统。Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基…