XML和JSON

XML 简介

xml是什么

XML是一种可扩展标记语言(Extensible Markup Language),它是一种用于在计算机网络上进行数据传输的标准格式。XML使用标记来标识数据,并且可以自定义标记,因此它具有高度的可扩展性。XML常用于描述文档结构和数据交换,并且广泛应用于Web服务、网络应用、数据存储和传输等领域。

XML的作用

xml 的主要作用有:
1、用来保存数据,而且这些数据具有自我描述性
2、它还可以做为项目或者模块的配置文件
3、还可以做为网络传输数据的格式(现在 JSON 为主)。

a.数据交换:XML是一种通用的数据格式,可以用来描述任何类型的数据,包括文本、数字、日期、图像、音频和视频等。XML格式的数据可以被不同的系统和应用程序读取和解析,从而实现数据交换和共享。
b.数据存储:XML可以作为一种结构化的数据存储格式,用来存储各种类型的数据,包括网站内容、电子文档、配置文件、日志等。XML格式的数据可以被轻松地存储、读取和编辑,同时具有良好的可扩展性和可维护性。
c.数据描述:XML可以用来描述数据的结构和语义,定义数据元素、属性、命名空间和约束等。XML Schema、DTD和XSLT等技术可以用来对XML文档进行验证、转换和展示,从而提高数据的可靠性和可用性。
d.Web服务:XML是Web服务中的重要技术之一,用来描述和传输数据。SOAP、WSDL和UDDI等技术都是基于XML的,可以用来实现跨平台、跨语言的Web服务。

XML语法

  1. 文档声明。
  2. 元素(标签)
  3. xml 属性
  4. xml 注释
  5. 文本区域(CDATA 区)

XML文件包含了一系列的标记和文本内容。其中标记是XML的关键元素,用来标识数据的结构和内容。XML标记是由尖括号(<>)包含的元素名称和属性列表组成的,例如:。XML标记可以嵌套或者包含其他标记,从而构成复杂的数据结构。XML文件还可以包含注释、处理指令、命名空间等信息,以及文本内容。通过这些标记和内容,XML文件可以描述和表示各种不同类型的数据。

使用

文档声明

1)创建一个 xml 文件

<?xml version="1.0" encoding="UTF-8"?> xml 声明。 而且这个<?xml 要连在一起写,否则会有报错

属性
version 是版本号 encoding 是 xml 的文件编码 standalone=“yes/no” 表示这个 xml 文件是否是独立的 xml 文件
2)图书有 id 属性 表示唯一 标识,书名,有作者,价格的信息

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
<books> <!-- 这是 xml  注释 -->
    <book id="SN123123413241"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
        <name>java 编程思想</name> <!-- name 标签描述 的是图书 的信息 -->
        <author>张三</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
        <price>9.9</price> <!-- price 单词是价格,描述的是图书 的价格 -->
    </book>
    <book id="SN12341235123"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
        <name>java从入门到精通</name> <!-- name 标签描述 的是图书 的信息 -->
        <author>班长</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
        <price>5.5</price><!-- price 单词是价格,描述的是图书 的价格 -->
    </book>
</books>

xml 注释

html 和 XML 注释 一样 :

元素(标签)

html 标签:
格式:<标签名>封装的数据</标签名>
单标签: <标签名 /> <br /> 换行 <hr />水平线
双标签 <标签名>封装的数据</标签名>
标签名大小写不敏感
标签有属性,有基本属性和事件属性
标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)
1)什么是 xml 元素
元素是指从开始标签到结束标签的内容。
例如:java 编程思想
元素 我们可以简单的理解为是 标签。
Element 翻译 元素
2)XML 命名规则
XML 元素必须遵循以下命名规则:
2.1)名称可以含字母、数字以及其他的字符
例如:

<book id="SN213412341"> <!-- 描述一本书 -->
    <author>班导</author> <!-- 描述书的作者信息 -->
    <name>java 编程思想</name> <!-- 书名 --><price>9.9</price> <!-- 价格 -->
</book>

2.2)名称不能以数字或者标点符号开始
2.3)名称不能以字符 “xml”(或者 XML、Xml)开始 (它是可以的)
2.4)名称不能包含空格
3)xml 中的元素(标签)也 分成 单标签和双标签:
单标签
格式: <标签名 属性=”值” 属性=”值” … />
双标签
格式:< 标签名 属性=”值” 属性=”值” …>文本数据或子标签</标签名>

xml 属性

xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。
属性必须使用引号引起来,不引会报错; 单引号双引号都可以

<book id="SN213412341"></book>
或者
<book id='SN213412341'></book>

语法规则:

2.5.1)所有 XML 元素都须有关闭标签(也就是闭合)
2.5.2)XML 标签对大小写敏感
2.5.3)XML 必须正确地嵌套
2.5.4)XML 文档必须有根元素
根元素就是顶级元素,
没有父标签的元素,叫顶级元素。
根元素是没有父标签的顶级元素,而且是唯一一个才行。
2.5.5)XML 的属性值须加引号
2.5.6)XML 中的特殊字符
2.5.7)文本区域(C DATA 区)
CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
CDATA 格式:

<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>

xml 解析技术介绍

转载自解析xml文件的几种技术
例子

@Test
public void readXML() throws DocumentException {
    // 需要分四步操作:
    // 第一步,通过创建 SAXReader 对象。来读取 xml  文件,获取 Document 对象
    // 第二步,通过 Document 对象。拿到 XML 的根元素对象
    // 第三步,通过根元素对象。获取所有的 book 标签对象
    // 第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
    
    // 第一步,通过创建 SAXReader 对象。来读取 xml  文件,获取 Document 对象
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/books.xml");
    // 第二步,通过 Document 对象。拿到 XML 的根元素对象
    Element root = document.getRootElement();
    // 打印测试
    // Element.asXML() 它将当前元素转换成为 String 对象
    // System.out.println( root.asXML() );
    // 第三步,通过根元素对象。获取所有的 book 标签对象
    // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
    List<Element> books = root.elements("book");
    // 第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,
    for (Element book : books) {
        // 测试
        // System.out.println(book.asXML());
        // 拿到 book 下面的 name 元素对象
        Element nameElement = book.element("name");
        // 拿到 book 下面的 price 元素对象
        Element priceElement = book.element("price");
        // 拿到 book 下面的 author 元素对象
        Element authorElement = book.element("author");
        // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
        System.out.println("书名" + nameElement.getText() + " , 价格:"+ priceElement.getText() + ", 作者:" + authorElement.getText());
    }
}

JSON简介

简介

JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 易于人阅读和编写。
JSON 具有自我描述性,更易理解

理解

  • 可以将JSON看作是一种轻量级的数据格式,类似于XML,但比XML更加简单,易于阅读和编写。JSON采用键值对的方式来存储数据,其中键是字符串,值可以是字符串、数字、布尔值、数组或对象。通过使用JSON格式,Web应用程序可以轻松地将数据传输到其他Web应用程序,而无需考虑不同平台之间的数据格式差异。同时,JSON的简单性也使得移动应用程序和桌面应用程序可以使用它来存储和传输数据。因此,掌握JSON格式是开发互联网应用程序的重要基础。
  • JSON 语法是 JavaScript 对象表示语法的子集。
    数据在名称/值对中
    数据由逗号 , 分隔
    使用斜杆 \ 来转义字符
    大括号 {} 保存对象
    中括号 [] 保存数组,数组可以包含多个对象

结构

1.对象 {}
一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,名称/值对使用逗号 , 分隔。
2.数组 []
一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔

JSON 键值对
格式:    "key":"value"
键用双引号包裹, 键值之间使用冒号: 分割
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(truefalse)
数组(在中括号中)
对象(在大括号中)
null

使用案例

JSON 表示一个人:
{"name":"孙悟空", "age":18,"gender":"男"}
在javaScript中使用json
let jsonStr = '{"name": "zhangsan", "age": "18"}'
// 将json字符串转换成js对象
let jsonObj = JSON.parse(jsonStr)
let name = jsonObj.name;
let age = jsonObj.age;
console.log("name是:",name,"   年龄是", age);

// 将js对象转换成json字符串
let jsonStr2 = JSON.stringify(jsonObj)
console.log("jsonStr2的值是:",jsonStr2);
在java中使用json
gson
Gson gson = new Gson();
//JsonBean 是json字符串对应的java bean类
// 将json字符串解析成java对象
JsonBean jsonBean = gson.fromJson(jsonStr, JsonBean.class);
// 将java对象转换成json字符串
String toJson = gson.toJson(jsonBean);

// 将json字符串解析成java对象 对于数组的情况 需要使用TypeToken
List<JsonBean> jsonBeanArr = gson.fromJson(jsonArr, new TypeToken<List<JsonBean>>(){}.getType());
fastJson

使用JSON

使用JSON可以分为两个方面:生成JSON和解析JSON。

生成JSON: 生成JSON可以通过编程语言中提供的JSON库函数来实现。不同的编程语言提供的JSON库函数可能略有不同,但基本思路是一致的。一般来说,生成JSON的流程大概是这样的:

创建一个JSON对象;
向JSON对象中添加键值对;
将JSON对象转换为字符串。
解析JSON: 解析JSON同样可以通过编程语言中提供的JSON库函数来实现。不同的编程语言提供的JSON库函数可能略有不同,但基本思路也是一致的。一般来说,解析JSON的流程大概是这样的:

将JSON字符串转换为JSON对象;
从JSON对象中获取需要的数据。
总之,使用JSON需要掌握以下几点:

掌握JSON格式的基本语法;
掌握编程语言中提供的JSON库函数的使用方法;
熟悉JSON的生成和解析流程;
注意不同编程语言中JSON库函数的差异。

JSON和xml的关系于区别

JSON(JavaScript Object Notation)和XML(Extensible Markup Language)都是常用的数据交换格式。它们的区别和关系如下:

数据结构:JSON采用键值对的方式表示数据,而XML采用标签嵌套的方式表示数据。

数据体积:相同数据量下,JSON格式的数据比XML格式的数据体积更小。

解析速度:相同数据量下,JSON格式的数据比XML格式的数据解析速度更快。

可读性:XML格式的数据比JSON格式的数据更具可读性,因为XML使用了标签和属性,可以更直观地展示数据的结构。

数据验证:XML格式的数据可以使用DTD(Document Type Definition)或XSD(XML Schema Definition)进行验证,而JSON没有相应的数据验证机制。

应用场景:JSON格式的数据在前端应用中更为常见,而XML格式的数据在后端应用中更为常见,例如SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)服务。

综上所述,JSON和XML都有各自的优势和应用场景。选择哪种格式取决于具体的应用需求和开发环境。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值