XML——通俗易懂去理解

总能看见XML文件,自己也会用到,但是并没有办法深刻理解“可扩展标记语言”这几个字,网上查阅后依旧谢谢知乎!

作者:华子
链接:https://www.zhihu.com/question/31353595/answer/60826602
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

简单概括(可能概括的不是很准确,但是我的语言功底也就到这了,见谅)的话就是,xml本身是一种格式规范,是一种包含了数据以及数据说明的文本格式规范。

接下来煮几个栗子说明一下。

比如,我们要给对方传输一段数据,数据内容是“too young,too simple,sometimes naive”,要将这段话按照属性拆分为三个数据的话,就是,年龄too young,阅历too simple,结果sometimes naive。

我们都知道程序不像人,可以体会字面意思,并自动拆分出数据,因此,我们需要帮助程序做拆分,因此出现了各种各样的数据格式以及拆分方式。

比如,可以是这样的
数据为“too young,too simple,sometimes naive”
然后按照逗号拆分,第一部分为年龄,第二部分为阅历,第三部分为结果。

也可以是这样的
数据为“too_young**too_simple*sometimes_naive”
从数据开头开始截取前面十一个字符,去掉*号并把下划线替换为空格作为第一部分,再截取接下来的十一个字符同样去掉*并替换下划线为空格作为第二部分,最后把剩下的字符同样去*号体会空格作为第三部分。

这两种方式都可以用来容纳数据并能够被解析,但是不直观,通用性也不好,而且如果出现超过限定字数的字符串就容纳不了,也可能出现数据本身就下划线字符导致需要做转义。

基于这种情况,出现了xml这种数据格式, 上面的数据用XML表示的话
可以是这样

<person age="too young" experience="too simple" result="sometimes naive" />

也可以是这样

<person>
    <age value="too young" />
    <experience value="too simple" />
    <result value="sometimes naive" />
</person>

两种方式都是xml,都很直观,附带了对数据的说明,并且具备通用的格式规范可以让程序做解析。

如果用json格式来表示的话,就是下面这样

{
    "age":"too young",
    "experience":"too simple",
    "result":"sometimes naive"
}

看出来没,其实数据都是一样的,不同的只是数据的格式而已,同样的数据,我用xml格式传给你,你用xml格式解析出三个数据,用json格式传给你,你就用json格式解析出三个数据,还可以我本地保存的是xml格式的数据,我自己先解析出三个数据,然后构造成json格式传给你,你解析json格式,获得三个数据,再自己构造成xml格式保存起来,说白了,不管是xml还是json,都只是包装数据的不同格式而已,重要的是其中含有的数据,而不是包装的格式。

作者:华子
链接:https://www.zhihu.com/question/31353595/answer/60826602
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/nnnlillian/p/8440169.html

时间: 2024-11-13 06:38:19

XML——通俗易懂去理解的相关文章

脚本(script)——通俗易懂去理解

通俗易懂的让自己理解一下.以下是知乎中一位作者的回答,我认为非常易懂! 作者:知乎用户链接:https://www.zhihu.com/question/19901542/answer/13298706来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 假设你经常从网上下东西,全都放在 D 盘那个叫做 downloads 的文件夹里.而你有分类的癖好,每周都要把下载下来的图片放到 pic 文件夹里,pdf 放到 book 文件夹里,mp3 和 wma 文件放到 mus

MFC中的DC CDC HDC由来由去理解

MFC中的DC CDC HDC由来由去理解 在此非常感谢博客主的究竟钻研,非常详细的参考资料:http://blog.csdn.net/yam_killer/article/details/7661449

网站外链数量的变化可以从哪几点去理解

自从绿萝算法推出以后,百度对外链的打击力度更大了,每一次搜索引擎算法调整之后,网站的收录和链接数量都会有不同程度的变化.网站外链数量的变化可以从哪几个方面去考虑呢,一起来分析一下. 首先搜索引擎会对过期了的网站来一个大扫除,删除一部分收录或者反链. 反链页面权重高的话,那么这个反链会长久的在搜索引擎数据库中.如果你做反链的网站被降权,那么你的链接也就会跟着降权的网站被删除,严重的情况还会影响到你的网站. 从自己的网站去分析,如果网站标题写的不好,这对网站也是有很大影响的.如果一个页面的标题存在关

用《捕鱼达人》去理解C#中的多线程

参考:http://www.cnblogs.com/maitian-lf/p/3678128.html 用<捕鱼达人>去理解C#中的多线程,布布扣,bubuko.com

按自己的想法去理解事件和泛型(C#)

上一篇那些年困扰我们的委托(C#)讲了委托,这一篇自然就轮到事件了. 不喜欢官方的表达方式,喜欢按照自己的想法去理解一些抽象的东西,我是一个喜欢简单怕麻烦的人. 事件 考虑到委托使用的一些缺陷,就有了事件.委托是不安全的,打个比方,如果把委托当作共有字段,那么事件就相当于是属性的概念. 事件就是被限制使用的委托变量,事件里面封装了一个多播委托. 事件语法:public event 委托类型 事件名; 事件的作用:事件的作用与委托变量一样,只是功能上比委托变量有更多的限制.比如:只能通过+=或者-

从认知角度去理解设计

设计并不是一味只求美感或者感觉,设计同样是一门建立在多学科基础上的科学,从认知角度来理解设计能帮助我们设计出更多尊重用户的作品,这样的设计才能经得起时间的考验,让更多用户所喜爱. 下面是我对<认知与设计——理解ui设计准则>这本书的概要与理解. 一.影响我们感知的因素     a. 经验影响感知: 我们根据经验对事物的预想:先入为主的主观印象往往影响感知,当我们带有    不同的主观感受去观察同一张图片时会看到不同的东西 我们的认知框架:认知框架即是不断置身的各种环境在我们心智中建立起开模式,

用代码截图去理解MVC原理

[概述] 看了蒋金楠先生的<Asp.Net Mvc框架揭密>,这本书详细地讲解了mvc的原理,很深奥也很复杂,看了几遍才将就明白了一点.他在第一章用了一个他自己写的mvc框架作为例子,代码看着有点多,所以为了帮助理解,我想用截图的方式一步一步地描述mvc的流程,本人能力有限,写的不好,还望大家包涵.如果蒋老师看到这篇文章,也希望能对我理解错误的地方进行指正. 一.先在web.config中注册自定义的HttpModule 二.输入网址 三.添加默认的路由规则 四.注册PostResolveRe

从有限状态机的角度去理解Knuth-Morris-Pratt Algorithm(又叫KMP算法,”看毛片“算法)

转载请加上:http://www.cnblogs.com/courtier/p/4273193.html 在开始讲这个文章前的唠叨话: 1:首先,在阅读此篇文章之前,你至少要了解过,什么是有限状态机,什么是KMP算法,因为,本文是从KMP的源头,有限状态 机来讲起的,因为,KMP就是DFA(Deterministic Finite Automaton)上简化的. 2:很多KMP的文章(有限自动机去解释的很少),写得在我看来不够好,你如果,没有良好的数学基础就很难去理解他们(比如下图), 因为,你

换种思路去理解设计模式(下)

开写之前,先把前两部分的链接贴上.要看此篇,不许按顺序看完前两部分,因为这本来就是一篇文章,只不过内容较多,分开写的. 换种思路去理解设计模式(上) 换种思路去理解设计模式(中) 8       对象行为与操作对象 8.1     过程描述 所谓对象行为和操作对象,需要三方面内容: l  操作过程: 一般表现为一个方法.该方法接收一个对象或者组合类型的参数,然后对这个对象或者组合进行操作,例如修改属性.状态或者结构等. l  操作的对象或组合: 会作为实参传入操作过程,会被操作过程修改属性.状态