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 ...
随机推荐
- 黑马_13 Spring Boot:05.spring boot 整合其他技术
13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 05.spring boot 整合其他 ...
- 单个body|简单解释|复杂解释|反面解释
单个body有三种方法简单解释.复杂解释和反面解释 ========================================================================== ...
- JavaSE--【JAVA】unicode为12288字符
转载:http://blog.csdn.net/zfpigpig/article/details/8186470 今天做一个导入数据功能时发现一个问题,就是一个unicode为12288的字符显示为空 ...
- centos 从头部署java环境
1.首先安装lrzsz 上传下载服务 yum install -y lrzsz 2.然后检查是否已经安装java rpm -qa|grep java 如果已经安装卸载后再重新安装 3.将下载好的jdk ...
- 【python】两行代码实现近百年的正反日期查询--20200202
到2020年了.有个日期也火了,记得上一次还是2011年11月2日.为啥捏,因为日期写成数字形式 正反是一样的. 2020年也有一个这样的日期.20200202:2020年2月2日. 于是乎想写一段代 ...
- 计算KS值的标准代码
计算KS值的标准代码 from scipy.stats import ks_2samp get_ks = lambda y_pred,y_true: ks_2samp(y_pred[y_true==1 ...
- Codeforces Round #606 E
题:https://codeforces.com/contest/1277/problem/E 题意:给定无向图,求有多少个pair之间的简单路径一定要经过给定的点a和b(pair中任何一个都不是a或 ...
- debian8.8安装sougou输入法
传送门:http://www.cnblogs.com/ligongzi/p/6137601.html 亲测可用
- SpringBoot 1.5.x 集成 Quartz 任务调度框架
Quartz 有分 内存方式 和 数据库方式 内存方式任务信息保存在内存中, 停机会丢失, 需手动重新执行, 数据库方式: 任务信息保存在数据库中, 重点是支持集群. 内存方式 RAMJobStore ...
- inotify+rsync实时同步
主服务器上安装inotify和rsync,备用服务器上安装rsync 主服务器上修改/etc/rsyncd.conf配置文件 三. 创建密码文件,防火墙设置,客户端和服务器端都要做如下操作 echo ...