【发布时间】:2010-08-27 01:57:03
【问题描述】:
阅读 StackOverflow 并收听 Joel Spolsky 和 Jeff Atwood 的播客,我开始相信许多开发人员讨厌使用 XML,或者至少 尽量避免使用 XML 来存储或交换数据 .
另一方面,我很喜欢使用 XML 有几个原因:
- XML 序列化以大多数现代语言实现,并且非常易于使用,
- XML 序列化比二进制序列化慢,当涉及到使用来自多种编程语言的相同数据 或旨在阅读和理解(甚至用于调试)时,XML 序列化非常有用人类(例如,JSON 更难理解),
- XML支持unicode,使用得当,不同编码、字符等都没有问题。
- 有很多工具可以轻松处理 XML 数据。 XSLT 就是一个示例,它可以轻松呈现和转换数据。 XPath 是另一种,可以轻松搜索数据,
- XML可以存储在某些SQL服务器中,这使得数据过于复杂而无法轻松存储在SQL表中的场景必须进行保存和操作;例如,JSON 或二进制数据不能直接通过 SQL 进行操作(除了通过操作字符串,这在大多数情况下很疯狂),
- XML 不需要安装任何应用程序。如果我希望我的应用程序使用数据库,我必须先安装数据库服务器。如果我希望我的应用使用 XML,我不必安装任何东西,
- XML 比 Windows 注册表或 INI 文件等更明确且可扩展,
- 在大多数情况下,没有 CR-LF 问题,这要归功于 XML 提供的抽象级别。
那么,考虑到使用 XML 的所有好处,为什么这么多开发人员讨厌使用它?恕我直言,唯一的问题是:
- XML 过于冗长,并且比大多数其他形式的数据需要更多的空间,尤其是在 Base64 编码方面。
当然,在很多情况下 XML 根本不适合。将 SO 的问题和答案存储在服务器端的 XML 文件中是绝对错误的。或者,在存储 AVI 视频或一堆 JPG 图像时,最不适合使用 XML。
但是其他情况呢? XML的弱点是什么?
致那些认为这个问题不是真正问题的人:
与非封闭式Significant new inventions in computing since 1980 之类的问题相反,我的问题是一个非常明确的问题,并且清楚地邀请解释其他人在使用 XML 时遇到的弱点以及他们为什么不喜欢它。它不邀请讨论,例如,XML 是好是坏。它也不需要扩展讨论;因此,目前收到的答案简短而准确,并提供了我想要的足够信息。
但是它是一个wiki,因为这个问题不可能有一个独特的很好的答案。
根据 SO,“不是真正的问题”是一个问题,“很难说出这里问的是什么。这个问题是模棱两可、含糊不清、不完整或修辞的,无法在目前的情况下得到合理的回答表格。”
- 这里要问什么:我觉得这个问题本身就很清楚了,上面几段文字就更清楚了,
- 这个问题是模棱两可的,模糊的,不完整的:再一次,没有什么是模棱两可的,既不模糊也不不完整,
- 或修辞:不是:我的问题的答案并不明显,
- 并且无法合理回答:已经有几个人对这个问题给出了很好的回答,表明这个问题可以得到合理的回答。
如何评价答案并确定接受的答案似乎也很明显。如果答案给出了 XML 问题的充分理由,那么这个答案很有可能会被投赞成票,然后被接受。
【问题讨论】:
-
讨论很好,但是来自FAQ:“避免提出主观、争论或需要扩展讨论的问题。这不是一个讨论板,这是一个可以提问的地方得到答复!” Where can I find interesting programming discussions?
标签: xml xml-serialization data-storage data-exchange