• 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

  • 相关阅读:
    入职小白随笔之Android四大组件——内容提供器详解(Content Provider)
    入职小白随笔之Android四大组件——广播详解(broadcast)
    入职小白随笔之Android四大组件——活动详解(activity)
    入职小白随笔之高通项目编译流程
    Java基础学习-Random类和Java数组
    Java基础学习-流程控制语句
    Java基础学习-三元运算符和键盘录入的基本步骤和使用
    Java基础学习-Eclipse综述和运算符的使用
    Java基础学习-类型转换之隐式转换
    SQLite----Android Studio3.6.3 当前最新版本数据库查找与导出方法
  • 原文地址:https://www.cnblogs.com/yuanchao-blog/p/10635739.html
Copyright © 2020-2023  润新知