什么是XML有用,什么时候应该使用它?

时间:2010-05-20 08:08:16

标签: php xml json data-structures architecture

我很好奇,我一直在开发非常强大的网站/网络应用程序,我从来没有学过XML,甚至更奇怪我从来没有真正感觉到需要。这不像卷曲或准备陈述,在知道他们做了什么以及他们如何工作之前,我有一种感觉'必须有一种更简单的方法来做到这一点!'或者“必须为此设计一些东西!”。

目前我使用MySQL和JSON,我没有'我需要学习'(XML)这种感觉,这一定是错的!

我真的很想听听XML的一些令人信服的论点,并了解它可以比JSON或MySQL(或web开发的其他方面)更好的事情以及何时应该使用它!

10 个答案:

答案 0 :(得分:13)

JSON非常轻量级,因此更适合将数据传递到前端。

XML具有描述性标签(我个人认为)使其更易于以原始格式阅读。 如果我想要从我的程序中加载任何类型的设置文件,我会以XML文件格式提供它。

无论如何,这是我对它的看法,但我确信有更多深入的理由选择一个而不是另一个。其中我没有足够的经验列出:)

但是我确实找到了几个可以提供一些好处的网站。

http://ajaxian.com/archives/json-vs-xml-the-debate(评论中的一些好处)

http://webignition.net/articles/xml-vs-yaml-vs-json-a-study-to-find-answers/

答案 1 :(得分:12)

XML可用于存储异构树结构,在可以应用通用工具并且需要一些冗余的情况下。如果您正在进行现代Web开发,那么很有可能您正在生成XHTML而不是HTML,并且正在生成RSS或Atom,所以您应该已经使用它了。最常见的RDF格式使用它。

JSON对于Web上的数据更容易处理,但是没有相同的功能集 - 您不能拥有JSON中的属性,因此数据和元数据之间没有隐含的区别,而您没有处理指令或为重复的文本块创建实体的能力。另一方面,XMLl的许多用途也不使用这些功能。 SQL数据库具有固定的模式,并且不能很好地表示树。

大多数情况下,XML用于互操作性。

答案 2 :(得分:6)

XML优于其他序列化格式的优势之一是可用工具的数量。另一种是形式化数据描述(XML Schema)的能力。

工具的可用性允许您使用XML编辑器,变换器,可视化器......例如,在我工作的地方,我们让通信团队使用XML编辑器来编辑内容和元数据。它们的技术性不足以手工编写JSON(或XML),但很容易为它们提供一个带有一个很好的通用前端的模板来编辑所需的文档。

有办法描述格式(XSD,DTD,Relax NG,...)意味着您还可以自动验证文档。它还可以很好地记录文档中允许的内容和不允许的内容。

答案 3 :(得分:5)

XML仅用于以(表面上)应用程序无关的结构化方式存储消息。这就是全部。换句话说,XML提供了一种在不同应用程序之间进行通信时保留数据语义(含义)的方法。它也是一种配置格式,因为(1)配置文件只是不同应用程序会话之间的消息*和(2)几乎每种语言都有成熟的标准XML库。

*您也可以将此视为应用程序之间通信的简并案例。

答案 4 :(得分:4)

我使用XML来翻译网站标签,标签等或非重复性内容。对于这种事情,它是一个救生员。

答案 5 :(得分:2)

我主要使用XML作为配置文件或传输格式,但是如果您熟悉JSON或YAML,它们可能对您来说同样合适,因此没有必要学习XML。

答案 6 :(得分:2)

XML是数据交换的唯一解决方案,而且没有别的优势。

因此,只有在您要解析或提供RSS源时才需要学习XML。虽然没有火箭科学,因为它与HTML一样具有标记语言,并有一些严格的指导原则。

Ol' good article from ol' good Joel解决问题

答案 7 :(得分:1)

“了解XML”可能意味着几件不同的事情。

首先是理解基本语法。它是编写XHTML,SVG,Atom,RSS以及许多其他XML语言应用程序语言的先决条件。

第二个是基于第一个,并且了解如何开发自己的XML应用程序,即自定义数据存储或交换格式。 JSON可以履行类似的角色并具有一些优势(例如能够隐式表示数据数组:{ bar: ['foo'] }。在XML中,解析器必须知道将<bar>的内容转换为数组对于编程语言,如果你想将它视为一个简单的数据结构)<bar><foo/></bar>)和缺点(XML允许你以任何顺序轻松地选择任何东西)。

答案 8 :(得分:1)

XML可用作以下格式:

  • 跨平台移植数据
  • 从数据库备份或导出文本
  • 跨语言整合

内容管理系统将其用于此目的。它对于缓存客户端模板代码也很有用,如在skechers.com上使用并在comment from Mark Beeson on Tim Bray's site中解释:

  

幸运的是, 是一种在客户端上缓存整个视图层的方法,同时仍然尊重页面并仍在正确的位置提供AJAX而没有可怕的URL。查看skechers.com的来源 - 我们使用的是客户端XSLT,它在浏览器中缓存,而一个xsl文件描述了整个站点的布局。这样,当从一个页面导航到另一个页面时,您只需下载少量XML。我们发现这极大地加速了我们的应用程序,并允许我们实现大量的大量缓存。

<强>参考

答案 9 :(得分:-6)

使用PHP,与大多数动态语言一样,最好将其降级为互操作性目的。 XML的重写速度比Java快,但PHP的重写速度比XML快。