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的简要区别的更多相关文章

  1. 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 ...

  2. JSON 序列化与反序列化, 与XML相互转换.

    方式一: 使用于 JavaScriptSerializer类 适用于普通场景, Excel导入导出, 前台传输查询参数直接处理等. JavaScriptSerializer serializer = ...

  3. 将XML文件中的内容转换为Json对象

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml;u ...

  4. xml学习篇(二) ----JSON 和XML对比

    在比较JSON和XML之前,我们先来上一堂关于数据格式的简要历史(更准确的说,是关于XML的始祖): 早在1970年,IBM开发了一种叫Generalized Markup Language的标记语言 ...

  5. 如何使用Google APIs和Google应用系统集成(7)----在里面JSON兑换XML数据处理,JSON数据包括违规XML数据规范:XML节点名称不支持号码Java解

    笔者电话Google Calendar APIs的GetColors方法,其中(有关详细信息Google Calendar API已经Google API看到我的博文介绍的其余部分,目前,我们只取Go ...

  6. WEB安全第五篇--其他注入的奇技淫巧:XML注入、Xpath注入、Json注入、CRLF注入

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  7. JSON 为王,为什么 XML 会慢慢淡出人们的视野?

    目前全球信息基础设施的特点是,拥有大量的数据交换格式.这一点也不奇怪.互联网几乎已经老了,而“物联网”及“大数据”正从概念走进现实.但我仍然相信,在这一领域还有一股较强的历史趋势,推动 JSON 数据 ...

  8. Python模块:shutil、序列化(json&pickle&shelve)、xml

    shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length])   # 将文件内容拷贝到另一个文件中 import shu ...

  9. .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)

    .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services .Add ...

随机推荐

  1. 静态页面缓存(thymeleaf模板writer)

    //前端html <!DOCTYPE html><html lang="en"> <head> <meta charset="U ...

  2. spring中的Filter使用

    https://blog.csdn.net/bibiwannbe/article/details/81302920

  3. PAT Advanced A1104 Sum of Number Segments (20) [数学问题]

    题目 Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For e ...

  4. 数据分析-Numpy-Pandas

    补充上一篇未完待续的Numpy知识点 索引和切片 数组和标量(数字)之间运算 li1 = [ [1,2,3], [4,5,6] ] a = np.array(li1) a * 2 运行结果: arra ...

  5. switch-case的用法

    case 值1: 表达式的值和 值1匹配上了,需要执行的代码; break; case 值2: 表达式的值和 值2匹配上了,需要执行的代码; break; case 值3: 表达式的值和 值3匹配上了 ...

  6. POJ-2349 Arctic Network(最小生成树+减免路径)

    http://poj.org/problem?id=2349 Description The Department of National Defence (DND) wishes to connec ...

  7. 吴裕雄--天生自然 PYTHON3开发学习:集合

    fruits = {"apple", "banana", "cherry"} fruits.add("orange") ...

  8. Opencv笔记(二十一)——傅里叶变换

    参考 Numpy 中的傅里叶变换 首先我们看看如何使用 Numpy 进行傅里叶变换.Numpy 中的 FFT 包可以帮助我们实现快速傅里叶变换.函数 np.fft.fft2() 可以对信号进行频率转换 ...

  9. win10+CUDA9.0176、CUDNN7.6.0安装

    在github上下载了一个文本分类的代码,包含了CNN.LSTM等分类模型,运行时说我的CUDA版本不行,我原来是9.1,让我安装9.0 然后开始卸载9.1啊,在此感谢博主:https://blog. ...

  10. Spring IOC 和AOP

    Spring是什么? Spring是一个轻量级的IoC和AOP容器框架. IOC:IOC就是控制反转,控制反转指的是把创建对象和管理对象之间的依赖关系交给了IOC容器来管理.以前new对象由程序员来控 ...