【XML详解】

XML基本概念

  • XML(全称EXtensible Markup Language,可扩展标记语言):是一种用于存储和传输数据的标记语言,通过标签(tags)来定义数据的结构和含义。
  • 数据格式:XML本质上是一种数据的格式,它可以用来存储复杂的数据结构以及数据之间的关系。

XML文件的特点

  1. 开始标签和结束标签:XML文件的结构通常以开始标签和结束标签的形式呈现,例如<users></users>
  2. 注释:XML文件允许包含注释,这些注释以<!--开始,以-->结束,例如<!--这是注释-->
  3. 版本信息:XML文件通常包含版本信息,例如<?xml version="1.0" encoding="UTF-8"?>,这表明文件遵循XML 1.0规范,并使用UTF-8编码。
  4. 根标签:XML文件中只能有一个根标签,它是所有其他标签的父标签,例如<users>
  5. 标签名和属性:XML中的标签名(如<user><name>等)可以自行定义(即可扩展),但标签必须正确嵌套。标签还可以有属性(如<user id="1">中的id="1"),用于提供关于标签的额外信息。
  6. 编码:XML文件可以使用不同的编码来保存字符,但UTF-8编码因其兼容性和灵活性而被广泛使用。

XML文件示例

<?xml version="1.0" encoding="UTF-8"?>
<users><user id="1"><name>黄策吾</name><password>123456789</password><address>城固</address><sex>男</sex></user><user id="2"><name>赵敏</name><password>8888</password><address>光明小区</address><sex>女</sex></user>
</users>

在这个示例中,<users>是根标签,它包含了两个<user>标签,每个<user>标签代表一个用户,并包含用户的idnamepasswordaddresssex信息。

IDEA创建XML文件

 XMI语法规则详解

 XML文件的基本规则

  • 后缀名:XML文件的后缀名通常为.xml
  • 文档声明:XML文档的第一行必须是文档声明,它指定了XML的版本和编码方式。
    例如:<?xml version="1.0" encoding="UTF-8"?>
  • 版本号和编码
    • version:指定XML的默认版本号码,通常是1.0,这个属性是必须存在的。
    • encoding:指定本XML文件的编码方式,常用的有UTF-8GBK等。

 特殊字符的转义

  • 在XML中,某些字符(如<&>'")具有特殊含义,如果需要在文本中直接使用这些字符,需要使用它们的转义序列来替代。例如:
    • &lt;    小于号<
    • &gt;    大于号>
    • &amp;    和 号&
    • &apos;   单引号'
    • &quot;   双引号"

CDATA区

  • CDATA区(Character Data Section)允许在XML文档中直接包含不需要被解析器解析的文本。CDATA区以 <![CDATA[ 开头,以 ]]> 结束。在CDATA区内的文本,包括特殊字符,都将被视为普通文本处理,不会进行任何转义或解析。啊?

 XML的应用

XML的作用

  1. 数据交换:XML可以作为不同系统或应用之间交换数据的标准格式。由于其结构化和可扩展性,它能够清晰地表示复杂的数据结构,使得数据交换更加高效和准确。
  2. 数据存储:XML可以作为数据的存储格式,尤其是在需要保持数据结构和内容清晰易读时。虽然它不如数据库系统高效,但在某些情况下(如配置文件),XML的易用性和可读性使其成为首选。
  3. 网络传输:在网络通信中,XML常被用作传输数据的格式。其结构化特性使得数据在网络中传输时更加可靠和易于解析。

XML的应用场景

  1. 配置文件:XML常被用作配置文件的格式,因为它允许用户自定义标签,从而以清晰、灵活的方式描述配置项。
  2. Web服务:在Web服务中,XML是SOAP(Simple Object Access Protocol)消息的基础,用于在Web上交换结构化信息。
  3. 数据表示:XML可用于表示各种类型的数据,如书籍、音乐、天气信息等。由于其可扩展性,XML能够灵活地适应各种数据结构和需求。
  4. 应用程序之间的通信:不同应用程序之间可以通过XML交换数据,从而实现功能集成和数据共享。

 解析XML文件 

使用Dom4j解析出xml文件

  • 下载Dom4j框架:指导用户从官网下载Dom4j库,这是实现XML解析功能的前提。
  • 项目文件夹设置
    1. 在项目中创建一个名为“lib”的文件夹,用于存放第三方库文件。
    2. 将下载的dom4j-2.1.3.jar文件(或其他版本)复制到lib文件夹中。
    3. 在jar文件上右键操作,选择“Add as Library”并确认,以便将Dom4j库添加到项目的依赖中。
  • 在类中导包使用:在Java代码中,通过import语句导入Dom4j库的相关类,以便在代码中使用其提供的API进行XML解析。

Dom4j的DOM实现

只能自上而下层层解析

Dom4j在解析XML文件时,采用了DOM的思想,但相比于传统的DOM解析器,Dom4j提供了更简洁、更高效的API。以下是Dom4j解析XML文件并构建文档对象模型的主要步骤:

  1. 创建解析器
    • Dom4j使用SAXReader类作为主要的解析器。SAXReader能够读取XML文件或输入流,并将其解析成一个Document对象。
  2. 读取XML文件
    • 通过SAXReader的read()方法,可以读取XML文件或输入流,并返回一个Document对象。这个Document对象代表了整个XML文档的根节点。
  3. 构建文档对象模型
    • Document对象是一个树形结构的根,它包含了XML文档中的所有节点。这些节点可以是元素节点(Element)、属性节点(Attribute)、文本节点(Text)等。
    • 通过Document对象,可以访问XML文档的根元素,并进一步遍历整个文档树,获取或修改其中的节点和属性。
  4. 遍历文档树
    • Dom4j提供了多种遍历文档树的方法,如使用elementIterator()遍历元素节点,使用attributeIterator()遍历属性节点等。
    • 开发者可以根据需要选择合适的遍历方法,以访问和处理XML文档中的特定节点和属性。
  5. 操作XML文档
    • 除了读取和遍历XML文档外,Dom4j还允许开发者对XML文档进行增删改查等操作。
    • 例如,可以使用addElement()方法添加新的元素节点,使用setText()方法修改节点的文本内容,使用remove()方法删除节点等。

 代码详解过程

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class MainXML {public static void main(String[] args) throws Exception {//1、创建一个Dom4j框架提供的解析器对象SAXReader saxReader=new SAXReader();//2、使用saxReader对象把XML文件读成一个Document对象Document document=saxReader.read("E:\\code\\javese\\summerVacation\\src\\666.xml");//3、从文档对象中解析XML文件的全部数据。Element root=document.getRootElement();System.out.println(root.getName());}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<users><user id="1" data="8888" ><name>黄策吾</name><password>123456789</password><address>城固</address><sex>男</sex></user><user id="2"><name>赵敏</name><password>8888</password><address>光明小区</address><sex>女</sex></user>
</users>import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.List;public class MainXML {public static void main(String[] args) throws Exception {//1、创建一个Dom4j框架提供的解析器对象SAXReader saxReader=new SAXReader();//2、使用saxReader对象把XML文件读成一个Document对象Document document=saxReader.read("E:\\code\\javese\\summerVacation\\src\\666.xml");//3、从文档对象中解析XML文件的全部数据。Element root=document.getRootElement();System.out.println(root.getName());//输出:users//4、获取根元素下的全部一级子元素List<Element> elements= root.elements();for (Element element : elements) {System.out.println(element.getName());}//输出:user//     user//5、获取当前元素下的某个子元素//如果有多个子元素,默认获取第一个Element user =root.element("user");System.out.println(user.elementText("name"));//输出:黄策吾//6、获取元素的属性信息System.out.println(user.attributeValue("id"));//1//或Attribute id=user.attribute("id");System.out.println(id.getName()+" "+ " "+id.getValue());//id  1//拿到所有属性List<Attribute> attributes=user.attributes();for (Attribute attribute : attributes) {System.out.println(attribute.getName()+"="+attribute.getValue());}//id=1//data=8888//7、如何获取全部的文本内容:获取当前元素下的子元素文本值System.out.println(user.elementText("name"));//黄策吾//或Element name=user.element("name");System.out.println(name.getText());//黄策吾}
}

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

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

相关文章

盘点15款主流客户管理系统,助力企业选型!

本文将盘点15款主流客户管理系统&#xff1a; 简道云、纷享销客、销售易、HubSpot、Zoho CRM、SAP CRM、Oracle CRM、金蝶云星空 CRM、用友 CRM、悟空 CRM、Salesforce、Microsoft Dynamics 365、亿客 CRM、八百客 CRM、CloudCC CRM。 在当今的商业环境中&#xff0c;客户管理系…

记一次将请求改为协商缓存的艰难过程

简单回顾一下前端缓存策略 ⛏️ 强缓存&#xff1a;在请求头规定的max-age和expirse过期之前直接读取本地缓存的资源&#xff0c;如果已经过期则调用协商缓存协商缓存&#xff1a;也叫弱缓存&#xff0c;以下都称为协商缓存。协商缓存是缓存过期&#xff0c;刷新缓存时间或者文…

JVM - 1.类加载子系统

1.类加载子系统 1.作用 1.负责从文件系统或网络中加载字节码(.class)文件&#xff0c;即将物理磁盘上的字节码文件加载到内存中&#xff0c;生成供程序使用的类对象 2.字节码文件要求在文件开头有特定的文件标识(CA FE BA BE)3.类加载器(ClassLoader)只负责字节码文件的加载&am…

pdf文件渲染到canvas

1、jQuery 2、Fabric.js Fabric.js是一个对canvas进行封装的Javascript库&#xff0c;主要的功能包括在canvas上创建和填充图形&#xff0c;比如矩形、圆形、多边形&#xff1b;生成的图像自带缩放、旋转、拖拽等功能。 3、PDF.js PDF.js 是一个使用 HTML5 构建的便携式文档格式…

在Linux中如何安装JDK

一、卸载JDK &#xff08;可以不删除&#xff0c;直接安装新的JDK&#xff0c;然后修改环境变量&#xff09; 1.1卸载使用yum安装的jdk 1.1.1卸载系统预安装的JDK 使用命令&#xff1a;yum list installed |grep java 注意&#xff1a;该命令只能查看使用yum命令安装的jav…

【架构-24】XML和JSON

XML&#xff08;可扩展标记语言&#xff09;和JSON&#xff08;JavaScript对象表示法&#xff09;是两种常用的数据格式&#xff0c;用于在不同系统之间传输和交换数据。它们各有优点和缺点&#xff0c;适用于不同的场景。下面是对XML和JSON的简要介绍以及它们之间的对比。 XM…

有关于算法备案的五大误区

有关于算法备案的五大误区 在这个数据为王的时代&#xff0c;算法已然成为推动社会前进的隐形巨轮。从搜索框中的每一次点击&#xff0c;到购物车里的每一件商品推荐&#xff0c;再到朋友圈里刷屏的动态&#xff0c;算法的身影无处不在&#xff0c;悄无声息地编织着我们的数字生…

提升文旅热度带动商家增收,抖音生活服务“心动大连”活动启动

8月22日&#xff0c;抖音心动之城大连系列活动&#xff08;下称“心动大连”&#xff09;启动仪式召开&#xff0c;主题为“遇见大连&#xff0c;心动无限”。活动由大连市人民政府指导&#xff0c;大连市文化和旅游局、抖音生活服务共同主办&#xff0c;旨在发挥抖音平台内容和…

opencv-python图像增强十六:图像马赛克

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、算法流程&#xff1a;二、算法实现&#xff1a;2.1 生成背板图&#xff1a;2.2 图片添加马赛克效果 三&#xff0c;整体代码实现&#xff1a;四&#xff0c…

点亮星星的世界:当小孩得了自闭症该怎么办

在这个丰富多彩的世界里&#xff0c;每一个孩子都是独一无二的天使。然而&#xff0c;有一些孩子却仿佛被困在了自己的小小世界中&#xff0c;难以与外界正常交流和互动。他们是自闭症儿童&#xff0c;他们的世界充满了挑战和困惑&#xff0c;也让家长们陷入了深深的担忧和焦虑…

UE5学习笔记17-让人物的视线和鼠标移动时的方向一致,并且不让人物模型旋转,只改变视线方向

一、创建标准动画帧 1.我想让人物在装备武器后根据鼠标的移动方向改变人物的视线方向&#xff0c;并且人物模型不会改变朝向 2.我的动画中存在一个四个方向瞄准的动画&#xff0c;将左下&#xff0c;坐上&#xff0c;左转&#xff0c;右上&#xff0c;右下&#xff0c;右转&…

Android - 音频参数合入

音频参数宏观来看分为两部分&#xff0c;audio和music。不管是哪个平台都需要分别合入这两部分。 A10 music参数 相关工程师调试后会提供 audio_para 文件&#xff0c;将该文件替换至对应工程下的文件编译即可 例: device/sprd/sharkle/sl8541e_1h10_32b/rootdir/system/et…

程序员失业跑滴滴,意外自学AI绘画成主业,月入过万不是梦!

一、突如其来的裁员 那是一个阴沉的下午&#xff0c;我像往常一样&#xff0c;在公司忙碌着。突然&#xff0c;HR叫我去会议室&#xff0c;告诉我由于公司业务调整&#xff0c;我所在的部门被整体裁撤。作为一名程序员&#xff0c;我从未想过自己会面临失业的困境。拿着那份补偿…

大语言模型-PDF文档解析

PDF解析能够提升大语言模型系统的信息处理能力和应用范围&#xff0c;为用户提供更加便捷、高效、个性化的服务体验。本文介绍三种常用的pdf解析方式&#xff1a;Open Parse、pdfplumber、PyMuPD。 一、Open Parse Open Parse是一个能够直观地识别文档布局并有效地对其进行分…

mac安装java17(jdk17)

1. 下载jdk17 官网下载&#xff1a;https://www.oracle.com/java/technologies/downloads 2. 直接安装 安装完后目录会存放在下面目录下 /Library/Java/JavaVirtualMachines 111111deMBP JavaVirtualMachines % ls jdk-11.0.227 jdk-17.jdk 3. 如果你已经安装过java&#…

kafka的12个重要概念

kafka的12个重要概念 1、服务器broker1.1、Broker 的主要功能1.2、Kafka Broker 的架构1.3、配置和管理1.4、高可用性和负载均衡1.5、总结 2、主题topic2.1、主要特点 3、事件Event4、生产者producer4.1、主要功能4.2、Producer 的配置选项4.3、Producer 的工作流程4.4、总结 5…

网页,html,Web端实现RTSP/RTMP实时推流视频和播放

随着技术的不断发展&#xff0c;实时流传输已经成为许多应用的重要组成部分。RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为一种实时流媒体传输协议&#xff0c;广泛应用于视频监控、直播等领域。然而&#xff0c;在Web端实现RTSP实时推流视频播放却面临一些挑…

谈下日本IT业现状以及未来的发展

日本IT业现状 市场规模与增长率&#xff1a; 根据最新数据&#xff0c;日本IT行业的市场规模在不断扩大。例如&#xff0c;2022年日本IT行业的总市值达到了约4500亿美元&#xff0c;年复合增长率约为3.5%。这表明该行业在经济中占据重要地位&#xff0c;并持续保持增长态势。就…

我忘记给我的代码备份了。。。。。。

ok啊&#xff0c;历经1个月&#xff0c;这个项目总算是快写完啦&#xff01;很烧脑&#xff0c;写这个脑细胞都不知道噶了多少&#xff0c;哎~ 虽然目前还有很大一部分可以改进&#xff0c;我觉得以我目前的能力能写成这样已经很不错了&#xff0c;还是学艺不精啊~ 实际上的话…

分享一个基于python新闻订阅与分享平台flask新闻发布系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…