浅析 xml 数据格式文件

news2024/12/25 12:59:33

浅析 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();
    }

}

输出结果如下所示 ->

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

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

相关文章

【产品经理】企业的产品增长之路

英特尔前CEO安迪格鲁夫有本书叫做《Only the Paranoid Survive》&#xff0c;全文的中心思想是警示他人&#xff0c;要居安思危&#xff0c;唯有打破常规&#xff0c;不拘泥于现状才能生存。 一、为何企业都在关注增长&#xff1f; 1. 诺基亚的贱卖 13年市值曾位居全球上市公…

HNU-操作系统OS-作业1(4-9章)

这份文件是OS_homework_1 by计科2102 wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第四章 4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你…

Spring中如何获取Bean方法上的自定义注解

文章目录 背景描述场景复现问题追踪解决方案扩展思考 背景描述 项目中需要扫描出来所有 标注了自定义注解A的Service里面标注了自定义注解B的方法 来做后续处理。 基本的思路就是通过Spring提供的ApplicationContext#getBeansWithAnnotation反射 来实现。 但是&#xff0c;随…

【Spring】核心与设计思想

哈喽&#xff0c;哈喽&#xff0c;大家好~ 我是你们的老朋友&#xff1a;保护小周ღ 谈起Java 圈子里的框架&#xff0c;最年长最耀眼的莫过于 Spring 框架啦&#xff0c;如今已成为最流行、最广泛使用的Java开发框架之一。不知道大家有没有在使用 Spring 框架的时候思考过这…

11111111111

def cosine_similarity(vector_a, vector_b): “”" 计算两个向量之间的余弦相似度 :param vector_a: 向量 a :param vector_b: 向量 b :return: distance “”" vector_a np.mat(vector_a) vector_b np.mat(vector_b) num float(vector_a * vector_b.T) denom n…

华为OD机试真题 Java 实现【预定酒店】【2022Q4 100分】

一、题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的 数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店 (n>=k>0) ,并由低到高打印酒店的价格。 二、输入描述 第一行: n,k,x 第二行: A[o] A[1] A[2]…A[n-1] 三…

djiango orm简单实现增删改查

目录 一、配置数据库1.1 在settings.py文件中找到DATABASES &#xff0c;配置数据库连接&#xff0c;这里用的是mysql 二、切换操作数据库的模块三、 创建一个app并注册3.1创建一个app3.2 注册app 三、在app1定义模型类四、迁移数据库&#xff0c;使用以下命令&#xff0c;生成…

Android修改aar并重新打包

目录 一.修改 aar 需要用到的工具&#xff08;就一个工具&#xff0c;使用方式非常简单&#xff0c;别担心&#xff09; 二.修改 aar 代码层业务逻辑 三.修改 aar layout 布局文件 四.附上recyclerview aar修改工程源码 一.修改 aar 需要用到的工具&#xff08;就一个工具&…

MKS SERVO4257D 闭环步进电机_系列8 CAN通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

AD19操作注意事项及信息

直接在PCB编辑界面添加差分对&#xff08;差分布线&#xff09; 1.PCB边界界面Panels菜单调出PCB界面 2.选择框中信息&#xff0c;点击添加差分对即可&#xff0c;然后利用交互式差分对布线命令进行布线操作。&#xff08;前提设置好差分布线规则&#xff09; 过孔&#xff1a…

7年经验之谈 —— 如何进行渗透测试以提高软件安全性?

对于各种规模的企业和组织来说&#xff0c;软件安全是一个至关重要的问题。随着网络攻击越来越复杂&#xff0c;软件中的漏洞越来越多&#xff0c;确保你的软件安全比以往任何时候都更重要。提高软件安全性的一个有效方法是渗透测试&#xff08;penetration testing&#xff09…

6月9号软件资讯更新合集....

Vivaldi 6.1 发布&#xff0c;可绕过微软限制使用 Bing Chat 最新版本的 Vivaldi 可在桌面端伪装成 Edge&#xff0c;使其用户受益&#xff0c;并为工作空间和标签增加了更多的功能。 支持微软 Bing Chat Vivaldi 是建立在 Chromium 开源项目之上的。它与 Edge 和 Chrome 使用…

Android kotlin序列化之Parcelable详解与使用(二)

一、介绍 注解序列化篇&#xff1a;Android kotlin序列化之Parcelize详解与使用_蜗牛、Z的博客-CSDN博客 通过上一篇注解序列化&#xff0c;我们已了解的kotlin的序列化比Java复杂了很多。而且有好多问题&#xff0c;注解虽好&#xff0c;但是存在一些问题。 一般在大型商业…

【Flutter】如何更改 Flutter 应用的启动图标

文章目录 一、前言二、什么是启动图标三、为什么我们需要更改启动图标四、如何更改启动图标五、注意事项六、总结 一、前言 欢迎来到 Flutter 的世界&#xff01;在这篇文章中&#xff0c;我们将探索 Flutter 的一些基础知识。但是&#xff0c;你知道吗&#xff1f;这只是冰山…

爬虫一般怎么解决加密问题?

① 对于网页端来说通常加密的算法是写在 js 代码里的&#xff0c;所以首先你要对 js 语言有所了解。 至少知道 js 基础的内容&#xff0c;其次找到对应 js 加密代码&#xff0c;然后找出关键的函数。 把 js 代码在 node.js 环境进行调试&#xff0c;最后在 Python 环境下利用…

Goby 漏洞发布|maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞

漏洞名称&#xff1a;maxView Storage Manager 系统 dynamiccontent.properties.xhtml 远程代码执行漏洞 English Name&#xff1a;maxView Storage Manager dynamiccontent.properties.xhtml RCE CVSS core: 9.8 影响资产数&#xff1a;1465 漏洞描述&#xff1a; maxVie…

C++debug-centos-ubuntu-vscode

1.centos下安装VSCODE 在linux系统(centOS7)中安装VSCode(Visual Studio Code)_centos vscode安装_沈醉不知的博客-CSDN博客 pacman -S code2.ubuntu下安装VSCODE 与windows下一样。 3.windows 调试 下载安装vscode cmake https://cmake.org/download GDB:UNIX及UNIX-…

php7.4生产环境压力测试CPU占用100%解决方案

最近开发了一个项目&#xff0c;客户要求压力测试&#xff0c;测试时发现并发量大时php-fpm占用cpu一直100%,调整了php的最大进程数pm.max_children&#xff0c;优化了程序效果不明显。后面使用了opcache&#xff0c;cpu使用率一下降到20%左右。 什么是opcache&#xff1f;下面…

网络渗透攻击与加固

目录 一、内网渗透模拟攻击 1.1 综合扫描工具 1.1.1 X-scan 1.1.2 Zenmap 1.2 内网渗透模拟流程 二、Net命令 2.1 net user 2.1.1 功能 2.1.2 用法 2.2 net localgroup 2.2.1 功能 2.2.2 用法 2.3 net share 2.3.1 功能 2.3.2 用法 2.4 net use 2.4.1 功能 2…

Lecture 20 Topic Modelling

目录 Topic ModellingA Brief History of Topic ModelsLDAEvaluationConclusion Topic Modelling makeingsense of text English Wikipedia: 6M articlesTwitter: 500M tweets per dayNew York Times: 15M articlesarXiv: 1M articlesWhat can we do if we want to learn somet…