是XML是人类可读的,但逗号分隔的文本和属性文件也是如此.
XML变得臃肿,难以解析,难以在代码中修改,加上我可以考虑的大量其他问题.
我的问题是什么是XML最吸引人的特质使它如此受欢迎?
与CSV文件相比,它具有的主要优点之一是它可以轻松地表示分层数据.要做到这一点,你需要一个像XML这样的自描述树结构,或者一个预先定义的格式,如SWIFT或EDI(如果你曾经处理过其中任何一个,那么你会发现XML很容易解析相比下).
它实际上很容易解析的原因之一是因为它"臃肿".这些结束标记意味着您可以准确地将元素的结尾与开始匹配,并在树变得不平衡时计算出来.您不能在"轻量级"替代品(如JSON)中执行此操作.
它易于解析的另一个原因是因为它从一开始就完全支持Unicode编码,因此您不必担心目标系统上的默认代码页是什么,或者如何编码多字节字符,因为该信息全部包含在文件中.
让我们不要忘记随附的其他人工制品,如定义的描述和验证机制(XSD)以及强大的声明性转换机制(XSLT).
这是90年代末期和互联网炎热的热点,但公司的系统无法在互联网附近.他们花了无数个小时处理CORBA,并且正在使用Enterprise JavaBeans来绘制这些旧系统与其新系统进行通信的情节.
随之而来的是SGML,它是几乎所有标记语言的前身(我正在跳过GML).SGML已经用于定义如何定义HTML,但HTML具有特定的标记,可以使用HAD来使Netscape正确显示给定的网页.
但是如果我们有其他数据需要解释呢?啊哈!
因此,鉴于XML是结构化的,您可以随意定义该结构,它自然允许您构建接口(在非OO的角度).它并没有真正做任何其他界面语言已经做过的事情,但它让人们能够设计自己的定义.
X12和HL7等接口语言确实存在,但有了XML,人们可以根据它们的AIX或AS/400系统进行定制.
由于HTML的标签语言占主导地位,因此XML很容易被推到最前沿,因为它易于使用.
直接从马的嘴里,XML的设计目标是:
XML应该可以直接在Internet上使用.
XML应支持各种各样的应用程序.
XML应与SGML兼容.
编写处理XML文档的程序应该很容易.
XML中的可选功能的数量应保持绝对最小值,理想情况下为零.
XML文档应该是易读的并且相当清晰.
应该快速准备XML设计.
XML的设计应该是正式和简洁的.
XML文档应易于创建.
XML标记中的Terseness具有最低限度的重要性.
它之所以受欢迎,是因为人们需要跨平台数据交换格式的标准.XML可能有点臃肿,但它是一种非常简单的分隔文本数据的方法,它向后兼容现有的大量SGML系统.
您实际上无法将XML与CSV进行比较,因为CSV是一种非常有限的表示数据的方式.CSV无法处理基本行列表之外的任何内容,也没有层次结构的概念.
XML并不难解析,一旦你编写或找到一个不错的XML实用程序,它也不难在代码中处理.
XML并不难解析,事实上它非常简单,因为在太阳下可以使用各种语言的优秀API.
XML本身并不臃肿,它可以在必要时尽可能简洁,但是由您的架构来保持这种方式.
XML以逗号分隔的文本永远不可能或应该的方式处理分层数据集.
XML是自我记录/描述,并且是人类可读的.为什么它是一个标准?嗯,首先,因为它可以标准化.CSV不是(也不是)标准,因为存在无限量的变化.
它有许多优点,缺点很少.主要问题是文件大小增加和处理速度变慢.但是,有一些优点:
它是结构化的,所以你只编写一次解析器
它支持嵌套结构的数据(层次结构,树等)
您可以在一个XML中嵌入多种类型的数据结构
您可以使用标准语言(XSL ...)描述模式(数据类型等)
您可以获得一个xml文件,并有机会通过阅读它来了解数据的含义,而无需单独指定pre-xml数据格式.
工具可以用于一般使用xml.之前,如果每个人都使用不同的文件格式:逗号分隔,二进制等.您需要编写自定义工具.
您可以通过使用默认值向架构中添加新标记来扩展它.如果正确完成,使用xml不会破坏解析xml但不知道标记的所有旧代码.专有格式通常不是这样.
可能使其受欢迎的主要原因是它看起来有点像HTML,很多人以前都理解过.因此它变得流行,然后因为它很受欢迎它变得更受欢迎,因为它很好地使用一个人人都知道的标准.
一个坏的事情是,由于所有标签,xml通常要大得多,因为它的文本基于以前的使用.但是,由于现在计算机规模越来越大,我们通常可以处理这个问题以及它的价值交易规模,以获得更好的自描述数据.
您可以下载将解析/写入xml的货架代码/库.
它支持标准化查询语言XPath的事实怎么样?这对我来说非常有用.