浅析 xml 数据格式文件

浅析 xml 数据格式文件

xml ( Extensible Markup Language ) 全称 -> 可拓展的标记语言;

        xml文件的主要用途:xml文件主要用于数据的 传输 和 存储,并不是展示;

        xml标签与html的区别:节点的标签使用方式和 html 十分相似,不同的是 xml 中的标签需要自定义;且语法相较于html来说更加严格(必须是成对标签,且区分大小写);

        语法注意:xml 文件节点最外层必须是 root 根节点 当然根节点不一定非得命名为 root,也可以是其他的自定义名称,但是一般来说大家都默认定义根节点为 root ];

这是一个简单的 xml 文件,如下所示 ->

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <name>澜色海湾</name>
    <age>22</age>
</root>

        从语法上来说 -> 头声明可写可不写,不影响;

        但是我还是建议大家写上 -> 因为头文件里面有一个 encoding 属性非常重要,这让我们在获取这些数据的时候知道应该用什么编码格式去读取他;

xml文件中,节点的内容如果带有特殊符号的话 ->

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <calculate>6 < 9</calculate>
    <calculate>6 &lt; 9</calculate><!--应该用这种形式-->
</root>

        如上述代码所示 -> 当我们 xml 节点内容中需要用到特殊字符例如 "<" (小于号) 时,必须要用实体转义字符;

        假设我们用浏览器去读取 xml 中的内容,当浏览器读到 "<" 时会认为后面是标签名,实际上并不是标签,而是节点内容,就会出错;

        当然字符替换为转义字符的这种解决方式,适用于特殊字符较少时;
        如果特殊字符很多很多 -> 那么替换起来就会十分麻烦,我们可以采用 <![CDATA[内容]]> 的方式定义节点内容,这样浏览器就不会解析节点中的内容,而是原模原样的将节点内容打印展示出来 -> 如下所示 ;

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <msg><[!CDATA[2 < 8 , 9  > 6 , 99 < 100]]></msg>
</root>

下面给大家罗列出在xml中需要转义的字符 ->

Original characterEscaped character
<&lt;
>&gt;
&&amp;
'&apos;
"&quot;

        Java 解析 xml 文件数据有四种方式,这里我用 dom 方式解析 xml 文件数据,代码如下所示 ->

        在 xml 中有三种最常用的节点类型,分别是 Element(元素节点)Attribute(属性结点)Text(文本节点)

student.xml文件如下所示 ->

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <student>
        <name>澜色海湾</name>
        <age>22</age>
    </student>
    <student>
        <name>托尼</name>
        <age>16</age>
    </student>
    <student>
        <name>安妮</name>
        <name>18</name>
    </student>
</root>

AnalisysXmlFileData.java文件如下所示 ->

public class AnalisysXmlFileData {

    public static void analisysFileData() {
        try {
            DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            //xml文件绝对路径
            Document parse = documentBuilder.parse("src/com/hkl/xmlFileAnalisys/student.xml");
            //获取名称为 root 的节点
            NodeList nodeList = parse.getElementsByTagName("root");
            for(int i = 0;i < nodeList.getLength();i++) {
                //获取第 i 个 root 节点
                Node rootNode = nodeList.item(i);
                //获取 root 节点中的所有子节点
                NodeList studentList = rootNode.getChildNodes();
                for(int j = 0;j < studentList.getLength();j++) {
                    //获取第 j 个子节点
                    Node student = studentList.item(j);
                    //获取子节点中所有的子节点
                    NodeList chlidNodeList= student.getChildNodes();
                    for(int k = 0;k < chlidNodeList.getLength();k++) {
                        //获取子节点中的第 k 个节点
                        Node stuAttr = chlidNodeList.item(k);
                        //如果该结点为 Element 节点
                        if(stuAttr.getNodeType() == Node.ELEMENT_NODE) {
                            System.out.println(stuAttr.getNodeName()+" = "+stuAttr.getFirstChild().getNodeValue());
                        }
                    }
                }
            }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        analisysFileData();
    }

}

输出结果如下所示 ->

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linuxOPS系统服务_linux高级命令

find命令 find 路径 [选项 选项的值] … 选项作用-name根据文件的名称进行-type按文件类型进行搜索&#xff0c;f代表普通文件&#xff0c;d代表文件夹 find命令查找文件 示例1 查找一个文件 案例1 ,在linux整个系统中查找 test.txt文件 find / -name test.txt -type f案例…

算法刷题-字符串-重复的子字符串

KMP算法还能干这个 459.重复的子字符串 力扣题目链接 给定一个非空的字符串&#xff0c;判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母&#xff0c;并且长度不超过10000。 示例 1: 输入: “abab” 输出: True 解释: 可由子字符串 “ab” 重复两…

Ubuntu下载速度过慢解决

今天用Ubuntu下载Roberta文件到本地&#xff0c;速度特别慢&#xff0c;Ubuntu 系统自带的源文件&#xff0c;都是国外的源网址&#xff0c;在国内下载安装升级源或者依赖的时候&#xff0c;都比较慢&#xff0c;更换国内的源地址&#xff0c;轻松搞定此问题。 目录 一、备份…

ChatGPT的未来发展

文章目录 1.什么是ChatGPT2.ChatGPT的基础技术3.ChatGPT工作原理4.ChatGPT应用场景5.ChatGPT局限性6.ChatGPT的未来发展 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xff…

一键部署通义千问预体验丨阿里云云原生 5 月动态

云原生月度动态 云原生是企业数字创新的最短路径。 《阿里云云原生每月动态》&#xff0c;从趋势热点、产品新功能、服务客户、开源与开发者动态等方面&#xff0c;为企业提供数字化的路径与指南。 本栏目每月更新。 01 趋势热点 &#x1f947; Apache RocketMQ 入选可信开…

哨兵3号(Sentinel 3)卫星数据处理

李国春 本文介绍使用RSD处理欧空局哨兵3号&#xff08;Sentinel 3&#xff09;卫星数据的具体方法。 气象数据多用NetCDF格式交换和存储&#xff0c;气象卫星数据也是如此。气象业内认为HDF5也是NetCDF的一部分&#xff0c;虽然文件扩展名使用的是.nc&#xff0c;但是实际上就…

【AntDB数据库】AntDB数据库告警管理

告警历史 功能概述 数据库系统的主机、单节点集群的被监测指标达到告警阀值时&#xff0c;AMOPS就会产生告警并展示在告警分类页面上。 告警分类页面提供告警搜索查看功能&#xff0c;用户可以指定监控项、集群、事件级别、时间范围和告警对象对告警进行搜索。 查询的告警数…

【MySQL数据库基础】

MySQL数据库基础 1. 数据库的操作1.1 显示当前的数据库1.2 创建数据库1.3 使用数据库1.4 删除数据库 2. 常用数据类型2.1整数&#xff08;xxxint&#xff09;2.2日期时间类型2.3字符串型 3. 表的操作3.1 查看表结构3.2 创建表3.3 删除表 1. 数据库的操作 1.1 显示当前的数据库…

React学习之路-目录结构

目录结构 node_modules — 存放项目依赖包 public — 存放网站的静态资源文件 favicon.icon — 网站偏爱图标index.html — 主页面&#xff08;重要&#xff09;logo192.png — logo图logo512 — logo图manifest.json — 应用加壳的配置文件robots.txt — 爬…

Elasticsearch:实用 BM25 - 第 1 部分:分片如何影响 Elasticsearch 中的相关性评分

作者&#xff1a;Shane Connelly 背景 在 Elasticsearch 5.0 中&#xff0c;我们切换到 Okapi BM25 作为我们的默认相似度算法&#xff0c;这是用于对与查询相关的结果进行评分的算法。 在本博客中&#xff0c;我不会过多地介绍 BM25 与替代措施&#xff0c;但如果你想了解 B…

【备战秋招】每日一题:4月23日美团春招第一题:题面+题目思路 + C++/python/js/Go/java带注释

为了更好的阅读体检&#xff0c;为了更好的阅读体检&#xff0c;&#xff0c;可以查看我的算法学习博客第一题-申请奖学金 在线评测链接:P1245 题目内容 塔子哥是一个热爱学习的大学生&#xff0c;他的梦想是成为一名优秀的算法竞赛高手。为了实现自己的梦想&#xff0c;他需…

Vue中v-text、v-html、v-on的基本语法(二)

文章目录 前言一、vue中data属性定义对象、数组相关数据二、v-text、v-html指令使用三、v-on基本指令使用(一)四、v-on指令基本使用(二)之在函数中获取vue实例本身this五、v-on指令基本使用(二)之在函数中传递参数六、v-on指令基本使用(二)之简化写法绑定函数和事件定义的两种写…

关于VPN的一些总结和理解

关于VPN的一些总结和理解 前言一、VPN的概述二、VPN的原理2.1 原理概述2.2 虚拟网卡2.3 点对点隧道的建立 三、其他3.1 vpn和vlan的区别&#xff1f;3.2 vpn和web代理的关系&#xff1f; 参考 前言 同样的机缘巧合&#xff0c;最近看了一些关于vpn的内容&#xff0c;总结一下&a…

go+vue自建运维管理平台

文章目录 鲁班运维平台容器管理集群管理namespace管理节点管理工作负载存储管理网络管理配置管理事件中心 kuboard 鲁班运维平台 这个平台和spug很像&#xff0c;感觉就像是spug运维平台的容器版本。 但是如果是容器平台则选择的余地很大&#xff0c;优秀的如kubersphere、kub…

LeetCod刷题笔记

目录 2739.总行驶距离 思路&#xff1a;模拟 代码 6890.找出分区值 思路&#xff1a;急转弯 代码: 1254.统计封闭岛屿的数目​编辑 思路&#xff1a;DFS 代码&#xff1a; 6447.给墙壁刷油漆 思路&#xff1a;动态规划 代码&#xff1a; 思路&#xff1a;状态DP 代码&…

Rust in Action笔记 第四章生命周期、所有权、借用

第四章用了一个行星通信的例子来阐述整个主题&#xff0c;主要角色有地面站&#xff08;Ground station&#xff09;、人造卫星&#xff08;CubeSat&#xff09;&#xff0c;两者有不同的状态并且能互相发消息通信&#xff1b; Rust有类型安全&#xff08;type safety&#xf…

WinDbg安装入坑1(C#)

由于作者水平有限&#xff0c;如有写得不对的地方&#xff0c;请指正。 使用WinDbg的过程中&#xff0c;坑特别的多&#xff0c;对版本要求比较严格&#xff0c;如&#xff1a; 1 32位应用程序导出的Dump文件要用32位的WinDbg打开&#xff0c;想要没有那么多的问题&#xff…

传统机器学习算法解析(opencv实现)

前言 文本主要解析在传统机器学习当中一些小的算法与思想&#xff0c;只是传统机器学习算法当中的一小部分&#xff0c;更多传统机器学习算法可参考我的另外几篇博客 链接1: PCA主成分分析 链接2: Canny边缘检测算法 链接3: K-Means聚类算法 链接4: SIFT算法分析 1. opencv …

农村饮水安全政策要求与解决措施

农村饮水安全&#xff0c;是指农村居民能够及时、方便地获得足量、洁净、负担得起的生活饮用水。农村饮水安全包括水质、水量、用水方便程度和供水保证率4项评价指标。 一、农村饮水安全问题 农村饮水安全问题一直是农村发展的重要问题。在过去&#xff0c;由于农村供水设施落…

Linux之多线程(下)——线程控制

文章目录 前言一、POSIX线程库1.概念2.pthread线程库是应用层的原生线程库3.错误的检查 二、线程控制1.创建线程——pthread_createpthread_create函数例子创建一个新线程主线程创建一批新线程 2.获取线程ID——pthread_self3.线程等待——pthread_join4.线程终止——return、p…