超详细的XML介绍【附带dom4j操作XML】

XML简介

XML(EXtensible Markup Language),可扩展标记语言**

特点

  • XML与操作系统、编程语言的开发平台无关

  • 实现不同系统之间的数据交换

作用

  • 数据交互

  • 配置应用程序和网站

  • Ajax基石

XML文档结构

1.声明 一般是XML文档的第一行

2.文档描述信息

声明的组成:

  • version:文档符合xml1.0规范

  • encoding:文档字符编码,默认为UTF-8

文档结构解释:

  • 根元素:只有一个

  • 根元素的开始标签:放在最前面

  • 根元素的结束标签:放在最后面

  • 标签内容在开始标签和结束标签之间

XML标签

XML文档内容由一系列标签元素组成

 <元素名 属性名=“属性值”>元素内容</元素名>
  • 属性值用双引号包裹

  • 一个元素可以有多个属性

  • 属性值中不能直接包含<、“、&

  • 不建议使用的字符:‘、>

XML编写注意事项

  • 所有XML元素都必须有结束标签

  • XML标签对大小写敏感

  • XML必须正确的嵌套

  • 同级标签以缩进对齐

  • 元素名称可以包含字母、数字或其他的字符

  • 元素名称不能以数字或者标点符号开始

  • 元素名称中不能含空格

DOM解析XML

DOM介绍

  • 文档对象模型(Document Object Model)

  • DOM把XML文档映射成一个倒挂的树

常用接口介绍

DOM解析包:org.w3c.dom

常用接口常用方法说明
Document:表示整个 XML 文档NodeList getElementsByTagName(String Tag)按文档顺序返回文档中指定标记名称的所有元素集合
Element createElement(String tagName)创建指定标记名称的元素
Node:该文档树中的单个节点NodeList getChildNodes()获取该元素的所有子节点,返回节点集合
Element:XML 文档中的一个元素String getTagName()获取元素名称

DOM解析XML文件步骤

  • 创建解析器工厂对象

  • 解析器工厂对象创建解析器对象

  • 解析器对象指定XML文件创建Document对象

  • 以Document对象为起点操作DOM树

由外到内,由上到下解析

解析的操作和方法

1. 读取xml文件 SAXReader()

 //将xml文件加载到内存中 XML解析器SAXReader saxReader = new SAXReader();//document 加载执行xml文档获取Document对象Document document = saxReader.read(XML路径);

2.获取XML根节点getRootElement()

 Element rootElement = document.getRootElement();

3. 获取当前节点下所有子节点 elements()

 //获取根节点下所有子节点List<Element> Elist = rootElement.elements();

4. 根据指定子元素名,获取元素下所有子节点

 
//获取节点名称为books下所有子节点List<Element> Elist = rootElement.elements(“books”);

5. 根据指定子元素名,获取子元素对象,如果重复,则获取第一个

 
//获取节点名称为books下单个子节点Element element= rootElement.element(“books”);

6. 设置元素文本内容 setText()

 newelement.setText("内容");

7. 获取当前节点文本内容 getText()

 elenent.getText()

8. 根据指定子元素名,获取元素中的文本

e.elementText(“book”)

9. 获取当前节点属性 attributeValue(“属性名”)

e.attributeValue("name")

11.创建节点Element对象.addElement("节点名")

Element newelement = rootElement.addElement("span");

12.节点添加,修改属性Element对象.addAttribute("节点属性名",“属性值”)

newelement.addAttribute("type","属性值");

13.新XML添加Documen对象

Document read = DocumentHelper.createDocument();

14.设置XML编码

OutputFormat 
OutputFormat outputFormat=OutputFormat.createPrettyPrint();
outputFormat.setEncoding("UTF-8");

15.写入XML文件

//写入XML文件的位置 以及指定的格式
XMLWriter xmlWriter=new XMLWriter(new FileWriter("cs.xml"),outputFormat);
//开始写入XML文件   写入Document对象
xmlWriter.write(document);
xmlWriter.close();

引入dom4j jar包

解析XML

public static void showXml(){try {SAXReader saxReader = new SAXReader();Document read = saxReader.read("index01/src/students.xml");//读取根元素Element rootElement = read.getRootElement();System.out.println("根元素名称:"+rootElement.getName());List<Element> elements = rootElement.elements();for (Element element : elements) {System.out.println( "根元素下面的元素的名称:"+element.getName()+",id属性的值为:"+element.attributeValue("id"));Element element1 = element.element("name");System.out.println("下面名为name元素的文本:"+element1.getText());Element element2 = element.element("age");System.out.println("下面名为age元素的文本:"+element2.getText());Element element3 = element.element("score");System.out.println("下面名为score元素属性为value的值:"+element3.attributeValue("value"));}} catch (Exception e) {e.printStackTrace();}}

修改Xml

public static void updateXml(){SAXReader saxReader = new SAXReader();try {Document read = saxReader.read("index01/src/students.xml");Element rootElement = read.getRootElement();List<Element> elements = rootElement.elements();for (Element element : elements) {if ("1002".equals(element.attributeValue("id"))){Element element1 = element.element("name");//修改第二个name元素名  李四==>王五element1.setText("王五");}}//新增元素Element element = rootElement.addElement("student");element.addAttribute("id","1003");element.addElement("name").addText("马六");element.addElement("age").addText("26");element.addElement("score").addAttribute("value","99");XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/students.xml"));xmlWriter.write(read);System.out.println("修改成功!!!");xmlWriter.close();} catch (Exception e) {e.printStackTrace();}}

新增XML文件

public static void insertXml() {//类方法,创建一个document对象Document document = DocumentHelper.createDocument();try {Element root = document.addElement("books");Element book1 = root.addElement("book").addAttribute("id", "book101");book1.addElement("author").setText("张三");book1.addElement("type").setText("文学");book1.addElement("from").setText("北京出版社");Element book2 = root.addElement("book").addAttribute("id", "book102");book2.addElement("author").setText("李四");book2.addElement("type").setText("历史");book2.addElement("from").setText("上海出版社");XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/books.xml"));xmlWriter.write(document);xmlWriter.close();} catch (Exception e) {e.printStackTrace();}}

删除XML元素

public static void deleteXml() {SAXReader saxReader = new SAXReader();try {Document read = saxReader.read("index01/src/books.xml");Element rootElement = read.getRootElement();List<Element> elements = rootElement.elements();for (Element element : elements) {if (element.attributeValue("id").equals("book101")) {Element element1 = element.element("author");element.remove(element1);System.out.println("删除成功");}}XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/books.xml"));xmlWriter.write(read);xmlWriter.close();} catch (Exception e) {e.printStackTrace();}}

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

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

相关文章

MybatisPlus代码生成器使用

一、前言 Mybatis逆向工程也可以生成代码&#xff0c;但配置太过复杂&#xff0c;不便于后期维护&#xff0c;Mybatis Plus 主动集成了代码的自动生成&#xff0c;用起来也很方便&#xff0c;两种代码自动生成我都用过&#xff0c;没有好坏之分&#xff0c;如果非要我推荐哪一…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5&#xff08;HyperText Mark Language 5&#xff09;来屏蔽不同引擎&#xff0c;平台底层的差异。 好处&#xff1a; 采用H5的开发方式&#xff0c;可以将开发和运营分离&#xff0c;运营部门自…

一个安卓鸿蒙化工具

DevEco插件&#xff0c;为已有安卓项目鸿蒙化加速。 目前支持&#xff1a; 1、安卓Vector Assets转svg&#xff1b; 2、json转ets model&#xff1b; 3、kotlin model转ets model&#xff1b; 下载地址&#xff1a;andtoharplugin1.1.0 安装&#xff1a; deveco插件安装选硬…

傻白甜萌妹爆改成长型女主!男频番的花瓶也有高光?

“师父&#xff0c;师妹不是任何人的依附&#xff0c;也不是小琼峰的一个摆件。” 能说出这句话的男主&#xff0c;堪称人间清醒。 男频作品的女性塑造向来是备受瞩目的话题。“镶边”、“挂件”、“花瓶”…总有这样的标签一个个打在“她们”身上&#xff0c;看似暗讽&#…

seL4 Untyped(二)

链接: Untyped Untyped 这篇主要是针对seL4物理内存管理的介绍。 物理内存 在seL4系统中&#xff0c;除了内核占用的一小部分静态内存之外&#xff0c;其他的所有的物理内存都是用户一级管理的。seL4在启动时创建的对象能力&#xff0c;以及seL4管理的其余物理资源&#xf…

tensorflow底层架构

tensorflow底层架构 架构图 Training libraries 和 Inference libs&#xff08;训练库和推理库&#xff09; Training libraries&#xff1a;用于模型的训练过程&#xff0c;包括定义模型、计算梯度、更新模型权重等。这些库提供了在训练过程中所需的所有功能。Inference lib…

推荐几本值得阅读的书籍!

大家好&#xff0c;这里是大话硬件。 初次关注我公众号的朋友第一反应基本都是认为内容太专业&#xff01; 其实不然&#xff0c;大话硬件公众号除了有硬件设计方面的内容&#xff0c;还包含书籍推荐&#xff0c;个人反思总结模块等内容。 今天这篇文章继上篇荐书《相见恨晚的…

学习IEC 62055付费系统标准

1.IEC 62055 国际标准 IEC 62055 是目前关于付费系统的唯一国际标准&#xff0c;涵盖了付费系统、CIS 用户信息系统、售电系统、传输介质、数据传输标准、预付费电能表以及接口标准等内容。 IEC 62055-21 标准化架构IEC 62055-31 1 级和 2 级有功预付费电能表IEC 62055-41 STS…

如何快速恢复误删除的文件?教你一招,不花一分钱,三步就可以搞定!

电脑文件越存越多&#xff0c;我们都会不定时的进行清理&#xff0c;但有时候&#xff0c;我们难免会误删除一些重要文件。当遇到类似情况的时候&#xff0c;不要着急&#xff0c;很多时候&#xff0c;删除的文件是有办法恢复的。 市面上有很多文件恢复软件&#xff0c;就可以帮…

常用工具推荐!分享7款AI论文修改软件工具网站

在当今学术研究和写作领域&#xff0c;AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率&#xff0c;还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站&#xff0c;其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…

YOLOv8改进 | 特征融合篇,YOLOv8添加iAFF(多尺度通道注意力模块),并与C2f结构融合,提升小目标检测能力

摘要 特征融合,即来自不同层或分支的特征的组合,是现代网络架构中无处不在的一部分。虽然它通常通过简单的操作(如求和或拼接)来实现,但这种方式可能并不是最佳选择。在这项工作中,提出了一种统一且通用的方案,即注意力特征融合(Attentional Feature Fusion),适用于…

心理辅导系统:Spring Boot技术驱动

3 系统分析 3.1可行性分析 在进行可行性分析时&#xff0c;我们通常根据软件工程里方法&#xff0c;通过四个方面来进行分析&#xff0c;分别是技术、经济、操作和法律可行性。因此&#xff0c;在基于对目标系统的基本调查和研究后&#xff0c;对提出的基本方案进行可行性分析。…

攻防世界---->Windows_Reverse1(补)

做题笔记。 做题回顾。 假设&#xff0c;我们不知道地址随机怎么办&#xff1f;不能动调&#xff0c;只能静态分析。 下载 查壳 upx脱壳。 32ida打开。 动调报错。 重新打开&#xff0c;静态分析。 跟进关键函数。 不明白可以反汇编和汇编一起看。 溯源。 *decode 取值等于 by…

robomimic应用教程(一)——模型训练

Robomimic使用集中式配置系统来指定所有级别的(超)参数 本文介绍了配置&#xff08;推荐&#xff09;和启动训练运行的两种方法 目录 一、使用config json&#xff08;推荐&#xff09; 二、在代码中构造一个配置对象 三、查看运行结果 1. 实验结果会存在一个固定文件夹中…

嵌入式入门小工程

此代码基于s3c2440 1.点灯 //led.c void init_led(void) {unsigned int t;t GPBCON;t & ~((3 << 10) | (3 << 12) | (3 << 14) | (3 << 16));t | (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16);GPBCON t; }void le…

如何精准高效做好网站安全防护?一文解读

企业数字化转型过程中&#xff0c;难免会受到多种网络安全威胁带来的负面影响。比如攻击者通过利用Web服务程序以及网站系统的安全漏洞&#xff0c;对企业进行数据窃取等破坏活动&#xff0c;严重损害企业利益。如何精准高效做好网站安全防护&#xff1f;相信本文会为你带来启发…

心觉:保持感恩的心,为什么可以吸引更多好机会和财富

​Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作176/1000天 保持一颗感恩的心&#xff0c;就可以吸引更多的机会和财富 很多人可能不理解&#xff0c;但是这是事实 千正万确的…

armbian debian 系统安装overlayroot后无法启用

千盼万盼 终于debian12可以用了 它终于也跟ubuntu 系统一样可以安装overlayroot了 但是 满怀欣喜的装完了发现 压根没法启动 这。。。。。 原因吗 也简单。。。 默认的映像里没有busybox......... 而它有这个要求。。。 overlayroot 包中有一个小错误&#xff1a;它要求 gr…

Java基础(上)

Java基础&#xff08;上&#xff09; 基础概念与常识 Java语言有哪些特点&#xff1f; 简单易学&#xff08;语法简单&#xff0c;上手容易&#xff09;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;平台无关性&#xff08;Java虚拟机实现平台无关…

黑群晖安装教程

黑群晖&#xff08;一种非官方的群晖NAS系统安装方式&#xff09;的安装教程相对复杂&#xff0c;但按照以下步骤操作&#xff0c;可以顺利完成安装。请注意&#xff0c;由于黑群晖涉及非官方操作&#xff0c;安装过程中可能遇到各种不确定因素&#xff0c;建议具备一定的计算机…