json/xml processing model与xml和json的简要区别
1.JavaScript Object Notation(JSON)
JSON是一种轻量级数据交换格式,广泛用作通用格式,用于序列化和反序列化通过Internet相互通信的应用程序中的数据。这些应用程序通常使用不同的编程语言创建,并在不同的环境中运行。JSON适用于这种情况,因为它是一个开放标准,易于读写,并且比其他表示更紧凑。RESTful Web服务通常广泛使用JSON作为请求和响应中的数据格式,JSON表示通常比对应的XML表示更紧凑,因为JSON没有结束标记。
为了生成和解析JSON数据,有两种编程模型,类似于用于XML文档的编程模型(processing model):
- 对象模型(object model)
对象模型创建一个代表内存中的JSON数据的树。然后可以导航和分析树。尽管在内存中创建的JSON数据是不可变的且无法修改,但对象模型是最灵活的,并且允许进行需要访问树的完整内容的处理。但是,它通常比流模型慢,需要更多内存。对象模型通过一次导航整个树来生成JSON输出 - 流模型(streaming model)
流模型使用基于事件的解析器,一次读取JSON数据的一个元素。当对象或数组开始或结束,找到键或找到值时,解析器生成事件并停止处理。应用程序代码可以处理或丢弃每个元素,然后解析器继续执行下一个事件。这种方法适用于本地处理,其中元素的处理不需要来自其余数据的信息。流模型通过一次使用一个元素进行函数调用来生成给定流的JSON输出。
2.XML 处理模型(XML Processing Model, XProc)
XML 处理模型(XML Processing Model, XProc)语言可以编制在处理 XML 时可结合使用的各种操作,在Java中,XML通过两种不同的API来处理:XML的简单API(SAX)和文档对象模型(DOM)
- SAX
SAX是一个基于事件的** API,这意味着它会在解析XML文件时将结果报告给应用程序(或回调)。从概念上讲,SAX解析器从文件的开头开始将XML文件分成多个部分,在解析完每个部分后通知应用程序。这与DOM不同,DOM完全解析XML文件,然后为您的应用程序提供完整的节点树。SAX使您的应用程序有机会在解析过程中仅存储所需的信息并丢弃其余信息。 - DOM
文档对象模型(DOM)是用于读取和操作XML数据的W3C标准。与SAX一样,您可以从DOM的各种解析器实现中选择(使用相应的API)。无论您选择哪种DOM解析器,DOM都会将XML文档显示为节点树,其中每个节点都表示元素,属性或文本数据。DOM创建的树结构将始终对应于用于解析的XML文档的层次结构。根元素(或节点)位于树的第一级,其子级位于下一级,依此类推。DOM提供对这些节点中的任何节点的随机访问,这意味着您可以随时读取或更改文档的任何部分。
3.Between JSON and XML
- XML比JSON更加冗长编写起来JSON更加便捷
- XML用于描述结构化数据,不包括数组,而JSON包含数组。
- JavaScript的eval方法解析JSON。应用于JSON时,eval返回描述的对象。
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
参考连接
https://docs.microsoft.com/en-us/previous-versions/dotnet/articles/aa478996(v=msdn.10)
https://docs.oracle.com/middleware/1213/wls/WLPRG/java-api-for-json-proc.htm
json/xml processing model与xml和json的简要区别的更多相关文章
- analysed of J-SON/XML processing model Extend to java design model (J-SON/XML处理模型分析 扩展到Java设计模型 )
一.JSON和XML 1.JSON JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.可在不同平台之间进行数据交换.JSON ...
- JSON 序列化与反序列化, 与XML相互转换.
方式一: 使用于 JavaScriptSerializer类 适用于普通场景, Excel导入导出, 前台传输查询参数直接处理等. JavaScriptSerializer serializer = ...
- 将XML文件中的内容转换为Json对象
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;u ...
- xml学习篇(二) ----JSON 和XML对比
在比较JSON和XML之前,我们先来上一堂关于数据格式的简要历史(更准确的说,是关于XML的始祖): 早在1970年,IBM开发了一种叫Generalized Markup Language的标记语言 ...
- 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解
笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...
- WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
- JSON 为王,为什么 XML 会慢慢淡出人们的视野?
目前全球信息基础设施的特点是,拥有大量的数据交换格式.这一点也不奇怪.互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实.但我仍然相信,在这一领域还有一股较强的历史趋势,推动 JSON 数据 ...
- Python模块:shutil、序列化(json&pickle&shelve)、xml
shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length]) # 将文件内容拷贝到另一个文件中 import shu ...
- .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)
.net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .Add ...
随机推荐
- vue实现简单的过滤器
html片段: <script src="https://unpkg.com/vue"></script> <div id="app&quo ...
- JavaWeb部分视频\2-12JSP,EL和JSTL
JavaWeb知识结构图 第3节 EL介绍和运算符 && 第4节 EL获取域中存储的数据 ## EL表达式 1. 概念:Expression Language 表达式语言 2. 作用: ...
- PAT Basic 1017 A除以B (20) [数学问题-⼤整数运算]
题目 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成⽴. 输⼊格式: 输⼊在1⾏中依次给出A和B,中间以1空格分隔. ...
- win10环境下pyinstaller打包pytorch遇到的问题及解决方案
pytorch-python源码生成windows的应用程序(.exe),报错OSError: could not get source code Failed to execute script h ...
- Docker Compose文件详解 V2
Compose file reference 语法: web: build: ./web ports: - "5000:5000" volu ...
- android蜂巢效果、环形菜单、Kotlin影视应用、简约时钟、查看导出App、支付宝AR扫码效果等源码
Android精选源码 一个蜂巢布局管理器,外观帅气外,动画效果也是很赞 一个基础 UI 框架项目,实现不同布局格式的混排 仿建行app效果,一个环形菜单的布局管理器源码 基于组件化实现的一款用Kot ...
- WebServerFactoryCustomizer set the port, address, error pages etc.
package com.ioc; import org.springframework.boot.SpringApplication; import org.springframework.boot. ...
- java select单线程 服务器
package com.Select; /** *select单线程 服务器 **/ import java.io.IOException; import java.net.InetSocketAdd ...
- Java快速输入输出
一.StreamTokenizer实现快速输入 需要的jar包 import java.io.BufferedReader;import java.io.IOException;import java ...
- python机器学习(2:KNN算法)
1.KNN 简介:knn算法是监督学习中分类方法的一种.它又被叫k近邻算法,是一个概念极其简单而分类效果又很优秀的分类算法. 核心思想:在训练集中选出离输入的数据最近的k个数据,根据这k个数据的类别判 ...