XML简介及操作

目录

1.XML简介

2.XML解析-DOM4J


1.XML简介

  • XML(EXtensible Markup Language),可扩展标记语言
  • 特点:
    • XML与操作系统、编程语言的开发平台无关
    • 实现不同系统之间的数据交换
  • 作用:
    • 数据交换
    • 配置应用程序和网站
    • Ajax基石

HTML 与 XML 区别:

  • XML 被设计用来传输和存储数据,其焦点是数据的内容。
  • HTML 被设计用来显示数据,其焦点是数据的外观。

XML标签:

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

<元素名 属性名=“属性值”>元素内容</元素名>

  • 属性值用双引号包裹
  • 一个元素可以有多个属性
  • 属性值中不能直接包含<&
  • 不建议使用的字符:‘、>

XML编写注意事项:

  • 所有XML元素都必须有结束标签
  • XML标签对大小写敏感
  • XML必须正确的嵌套
  • 同级标签以缩进对齐
  • 元素名称可以包含字母、数字或其他的字符
  • 元素名称不能以数字或者标点符号开始
  • 元素名称中不能包含空格

示例:

编写XML文档如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PhoneInfo><Brand id="0" name="华为"><Type>HUAWEI P20</Type><Type1>HUAWEI P30</Type1><Type2>HUAWEI P40</Type2></Brand><Brand id="1" name="苹果"><Type>iPhone14 ProMax 1TB</Type></Brand><Brand id="2" name="xiaomi"><Type>Redmi K40</Type></Brand>
</PhoneInfo>

2.XML解析-DOM4J

XML解析:获取元素里面的字符数据或属性数据。

Dom4j:

        非常优秀的Java XML API,性能优异,功能强大,开放源代码

Dom4j的基本用法

使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,就可以针对性的进行解析操作了。

操作解析
SAXReader()读取xml文件
getRootElement()获取xml根节点
elements()获取当前节点下的所有子节点
elements(“xxx”)获取指定元素下的所有子节点
element(“xxx”)获取指定元素下的子元素对象
setText()设置元素文本内容
getText()获取当前节点文本内容
elementText(“xxx”)

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

attributeValue(“属性名”)

获取当前节点属性
对象.addElement("节点名")创建节点 Element 
对象.addAttribute("节点属性名","属性值")节点添加,修改属性
DocumentHelper.creatDocument()创建 Document 对象
OutputFormat.createPrettyPrint()设置XML编码
XMLWriter xmlWriter=new XMLWriter(new FileWriter("cs.xml"),outputFormat)写入xml文件

读取xml文件 SAXReader()

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

Document document = saxReader.read(XML路径);

获取XML根节点getRootElement()

Element rootElement = document.getRootElement();

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

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

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

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

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

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

设置元素文本内容 setText()

newelement.setText("内容");

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

elenent.getText()

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

elenent.elementText(“book”)

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

elenent.attributeValue("name")

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

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

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

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

新XML添加Documen对象

通过DocumentHelper.creatDocument()创建一个Document对象

Document read = DocumentHelper.createDocument();

设置XML编码

通过OutputFormat的静态方法createPrettyPrint()创建OutputFormat对象,并设置编码集

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

写入XML文件

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

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

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

相关文章

python爬虫-获取headers(报文头)关键参数实例小记

注意&#xff01;&#xff01;&#xff01;&#xff01;某XX网站逆向实例仅作为学习案例&#xff0c;禁止其他个人以及团体做谋利用途&#xff01;&#xff01;&#xff01; 第一步&#xff1a;请求页面&#xff0c;得到响应。建议首次请求时headers内容都带着&#xff0c;调试…

react报错信息

报错信息 render函数里dom不能直接展示obj对象 取变量记得要有{} https://segmentfault.com/q/1010000009619339 这样在写的时候就已经执行方法了&#xff0c;所以此处用箭头函数&#xff08;&#xff09;》{}才会在点击时执行或者 遍历数据使用map来遍历&#xff0c;使用forea…

Docker【安装与基本使用】

【1】Docker的安装 注意&#xff1a;如果之前安装过docker其他版本&#xff0c;请删除干净。 docker-01 10.0.0.51 2G docker-02 10.0.0.52 2G docker-01 [rootdocker-01 ~]# cp -rp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite ‘/etc/localtime’? …

如何查询企业诉讼信息?

如何免费查询企业诉讼信息&#xff1f; 企业的司法诉讼信息可以通过中国裁判文书网、中国执行信息公开网、中国庭审公告网去查询。 在这些网站上你可以通过输入企业名称或者注册号来查找相关的法律信息。大多数的法律诉讼信息都会在这些网站上公开&#xff0c;也会有一些特殊…

MyBatis代理开发:简化数据访问层(DAO)的实现

引言 在现代的应用程序开发中&#xff0c;数据访问层&#xff08;DAO&#xff09;是连接应用程序与数据库之间的关键组件。MyBatis是一个流行的Java持久层框架&#xff0c;提供了一种简化数据访问层开发的方法&#xff0c;即代理开发。本文将介绍MyBatis代理开发的概念和使用方…

H3C-Cloud Lab实验-OSPF配置实验

一、实验拓扑图 实验需求&#xff1a; 1、按照图示配置 IP 地址 2、按照图示分区域配置 OSPF &#xff0c;实现全网互通 3、为了路由结构稳定&#xff0c;要求路由器使用环回口作为 Router-id&#xff0c;ABR 的环回口宣告进骨干区域 4、掌握OSPF初始化流程、路由表学习的过…

el-progress组件使用,样式修改,自定义文字

正常的el-progress显示是这样的 修改后 自动计算percentage&#xff0c;format自定义显示文字 <template><div><div class"content-view"><div v-for"(item, index) in progressList" class"item-view"><el-prog…

力扣算法数学类—Excel 表列序号

目录 Excel 表列序号 题解&#xff1a; 代码&#xff1a; Excel 表列序号 171. Excel 表列序号 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -…

代理IP、Socks5代理和SK5代理的前沿技术与未来发展趋势

代理IP的前沿技术应用 人工智能与智能代理&#xff1a;结合人工智能技术&#xff0c;代理IP可以更加智能地处理网络请求和数据流&#xff0c;提高代理效率和准确性。区块链与去中心化代理&#xff1a;通过区块链技术&#xff0c;代理IP可以实现去中心化管理和身份验证&#xf…

解锁编程世界的魔法密码:探索算法的奥秘与应用

一个程序员一生中可能会邂逅各种各样的算法&#xff0c;但总有那么几种&#xff0c;是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓&#xff01;”算法吧~* 一&#xff1a;引言 算法是解决问题和优化程序性能的核心&#xff0c;它是一…

你真的会用async和await么?

async函数搞懂 背景asyncawaitawait 知识点1await 知识点2await 知识点三await 知识点四await 知识点五 背景 背景就是遇到了一个比较烦人的模块&#xff0c;里面的涉及到了大量的async 和 awiat。发现大多人对这个语法糖一知半解&#xff0c;然后大量的滥用&#xff0c;整理一…

数据标注的类型有哪些?

构建像人类一样的AI或ML模型需要大量训练数据。要使模型做出决定并采取行动&#xff0c;就必须通过数据标注来训练模型&#xff0c;使其能够理解特定信息。 但是&#xff0c;什么是数据标注呢&#xff1f;数据标注是指对用于人工智能应用的数据进行分类和标注。我们必须针对特定…

Qt6 Qt Quick UI原型学习QML第二篇

Qt6 Qt Quick UI原型学习QML第二篇 界面效果QML语法语法讲解核心要素项目元素矩形元素文本元素图像元素MouseArea元素 界面效果 QML语法 import QtQuick 2.12 import QtQuick.Window 2.12Window {id: rootvisible: truewidth: 640height: 480title: qsTr("QML学习第二篇&…

用微服务架构推进企业数字化转型升级

随着数字化转型进入深水区&#xff0c;企业应用程序建设需求急剧增长且变化多端&#xff0c;软件架构经历了单体结构、垂直架构、SOA架构&#xff0c;发展到了现在的微服务架构。 单体架构目前应用较多&#xff0c;部署容易&#xff0c;但单体式应用内部包含了所有需要的服务&…

FPGA——点亮led灯

文章目录 一、实验环境二、实验任务三、实验过程3.1 编写verliog程序3.2 引脚配置 四、仿真4.1 仿真代码4.2仿真结果 五、实验结果六、总结 一、实验环境 quartus18.1 vscode Cyclone IV开发板 二、实验任务 每间隔1S实现led灯的亮灭&#xff0c;实现流水灯的效果。 三、实…

基于卡尔曼滤波进行四旋翼动力学建模(SimulinkMatlab)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2.Docker镜像和容器操作

文章目录 Docker操作Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像详细信息为镜像添加标签删除镜像导出导入镜像上传镜像 Docker容器操作创建容器查看容器状态启动容器创建并启动容器进入容器停止容器删除容器复制容器文件到宿主机容器的导出导入 Docker操作 ###查看do…

vscode 端口转发实现端口映射,实现端口自由

用vscode连接server进行开发&#xff0c; 是非常方便的&#xff0c;但很多时候&#xff0c;server的端口开放的很有限&#xff0c;那么就可以利用vscode进行端口映射 举一个应用场景&#xff1a; 先通过A利用vscode 连接B&#xff0c;然后再vscode 的port窗口进行端口转发&…

phtyon读取pdf的远程地址解析内容

import xlwt,pymysql,requests,json,datetime,PyPDF2,urllib.request,io,ssl # 添加context 解决读取pdf时SSL报错问题 context ssl._create_unverified_context() # 读取pdf地址 获取pdf内容 req urllib.request.urlopen(contract_download_url,contextcontext) remo…

SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文

场景 为防止数据泄露&#xff0c;需要在插入等操作时将某表的字段在数据库中加密存储&#xff0c;在需要查询使用时明文显示。 Sharding Sphere ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈&#xff0c; 它由Sharding-JDBC、Sharding-Proxy和Shardi…