XML 有啥用,我应该啥时候使用它?

Posted

技术标签:

【中文标题】XML 有啥用,我应该啥时候使用它?【英文标题】:What is XML good for and when should i be using it?XML 有什么用,我应该什么时候使用它? 【发布时间】:2011-02-21 18:05:11 【问题描述】:

我很好奇,我一直在开发功能非常强大的网站/网络应用程序,但我从未学习过 XML,更奇怪的是,我从未真正觉得有必要学习。它不像 curl 或 Prepared Statements,在知道它们做了什么以及它们是如何工作之前,我有一种感觉“必须有一种更简单的方法来做到这一点!”或“必须为此设计一些东西!”。

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

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

【问题讨论】:

我从你的问题中删除了 javascript 标签,好问题我也需要知道这一点 【参考方案1】:

对于 php,与大多数动态语言一样,它最好归结为互操作性目的。 XML 的重写速度比 Java 快,但 PHP 的重写速度比 XML 快。

【讨论】:

XML 是一种结构化数据的方式,Java 和 PHP 是编程语言,它们不能相提并论。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

XML 主要用于互操作性。

【讨论】:

如果他正在做 Web 开发,他很有可能会生成无效的 XHTML,以 text/html 发送。恕我直言:) “JSON 中不能有属性” 怎么样: "firstAttribute": "value1", "secondAttribute": "value2", "content": [ /*blah*/] ?这些属性本身可以是对象,而在 XML 中它们仅限于字符串。 @Daniel - 您的示例将在 XML 中表示为 value1value2... data>,not,正如 Pete 所说:...。诚然,差异可能只是语义上的,但肯定有一个论据支持从元数据中划定数据 @K Prime - 但我称它们为firstAttribute 等,原因很简单,因为它们代表了通常由属性表示的 XML 中的任何内容。如果元数据值得支持,那么为什么要给它一个不能支持结构而只能支持字符串值的残缺功能呢? @Daniel Earwicker XML 中没有“字符串”。属性的内置类型是 CDATA、NMTOKEN、NMTOKENS、大致字符数据、枚举值或枚举值列表。但这些字段不是元数据,它们是数据。您始终可以使用字段的名称来表示它们是属性,但这是解释而不是文本、结构标记(元素标签)和元数据(属性)之间的区别【参考方案4】:

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

XML 具有描述性标签(我个人认为)可以更轻松地以原始格式阅读。 如果我想从我的程序中加载任何类型的设置文件,我会使用 XML 文件格式。

无论如何,这就是我的想法,但我确信选择其中一个而不是另一个有更深入的原因。其中我没有足够的经验来列出:)

不过,我确实找到了几个网站,它们提出了一些好处。

http://ajaxian.com/archives/json-vs-xml-the-debate(cmets 中的一些优点)

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

【讨论】:

你是什么意思xml does not support arrays?!?!? 很遗憾你摆脱了关于数组的部分。 XML 确实不支持数组(例如:它没有提供内置的特定功能来使它们自描述)。相反,XML (ab) 对具有有序未命名成员的数组和具有命名成员的类记录对象使用相同的语法。 XML 需要模式的第一个原因是克服这个限制! 这是我第一次尝试为某人回答问题,我感到很沮丧(我一直在问,但嘿,我正在学习),但这是一些很好的信息。感谢您为我清理。 嘿@Kohan,感谢您的努力!不用担心这么小的事情。再次感谢您分享您的观点和如此好的链接。 :)【参考方案5】:

我使用 XML 翻译网站标签、标签等或非重复内容。对于这种东西,简直就是救命啊。

【讨论】:

【参考方案6】:

“了解 XML”有多种含义。

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

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

【讨论】:

【参考方案7】:

XML 只对数据交换有用,没有别的用处。

因此,只有当您要解析或提供 RSS 提要时,您才必须学习 XML。但这不是火箭科学,因为它是与 HTML 相同的标记语言,但有一些严格的准则。

Ol' good article from the founder of Stack Overflow 解决问题

【讨论】:

这甚至不是真的。人们可以用无穷无尽的其他方式传输数据。由于其中有很多无用的标签,因此有效负载会增加。 @StimpsonCat 那时我的英语不是那么好。我更正了句子以传达原意。【参考方案8】:

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

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

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

【讨论】:

【参考方案9】:

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

*您也可以将其视为应用程序之间通信的退化案例。

【讨论】:

【参考方案10】:

XML 可用作以下格式:

跨平台移植数据 从数据库备份或导出文本 跨语言集成

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

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

参考文献

MediaWiki: Export WordPress: Tools Export Screen mysqldump XML format XML Quotes XML: The Angle Bracket Tax Is XML too Hard? XML is not S-Expressions Is XML Human Readable?

【讨论】:

以上是关于XML 有啥用,我应该啥时候使用它?的主要内容,如果未能解决你的问题,请参考以下文章

XML中DOM有些啥用,它具体有很多的对象和方法,他们有啥用,具体举个例子用在哪?!

MSXML是啥东西?有啥用?

java 中byte数组存的是啥类型的数据,byte数组有啥用

C#中ref和out到底有啥用?啥时候会用到呢?我浏览了一些资料但都不是很明白。

安卓软件用ZIP方式打开时会出现几个文件夹,那些都代表了啥意思有啥用啊!

java中的StringBuilder有啥用?啥时候用StringBuilder?