正确使用XML

时间:2011-01-27 03:28:01

标签: xml

在过去的几年里,我看过很多文章,关于XML如何过度使用或错误使用的意见。

什么时候应该使用XML?你的普通程序员可能会遇到哪些具体的例子,毫无疑问,XML是最好的解决方案之一?是否有任何好的文章/书籍可以解决这个问题(不是关于什么XML不适合的文章)?

6 个答案:

答案 0 :(得分:2)

我使用xml IFF我需要人类可读(对于可读的某些定义),分层,可验证(架构/放松),可互操作(从应用程序到应用程序甚至序列化对象)存储格式。

当目标是允许第三方工具将数据转换为其他演示文稿(xsl-> docbook,xhtml等)时,我也会使用它。

如果你需要一个私有/内部数据格式,xml就像你能得到的一样过分。

答案 1 :(得分:2)

XML主要是作为文档标记语言设计的,它在交换结构化数据方面的广泛采用令我感到意外(至少对我而言)。值得回顾一下为什么采用这种方法(与预先存在的选项相比,如CSV,ASN.1或自定义格式,如EDI和Swift)。它是一种支持Unicode的格式,并且足够丰富以表示相当复杂的数据;有免费的现成解析器,它是人类可读的,使调试变得容易,并且可以使用模式语言(实际上,模式语言的选择)进行验证。它带有自己的高级声明处理语言,包括XSLT,XPath和最近的XQuery。但它确实带来了来自文件世界的包袱 - 对于某些面向数据的应用程序而言非常重要的行李(因为事实上,大多数数据都在某处有叙述文本),但并非所有人都有。它从来没有考虑到现有编程语言的限制,这是人们寻求替代方案的最大原因。 JSON和YAML在没有行李的情况下提供了许多原始的好处,但并非全部 - 对于许多应用程序来说,缺乏强大的模式语言是一个严重的缺点。但是,如果您希望语言主要用于在过程程序之间交换数据,而不需要模式,并且不需要富文本,那么JSON可能更适合您,

答案 2 :(得分:1)

XML的优点在于它允许您在系统之间传输结构化信息,而这些信息无法以其他方式进行有效通信。例如,在两个数据库之间说。因此,在这种情况下可以有效地使用XML,并且XML解析器和输出函数通常在DBMS解决方案中实现。也许我的答案过于设计,无法回答像您这样广泛的问题,但我相信XML带来的价值在于它能够在不兼容的技术之间共享结构化信息。

答案 3 :(得分:1)

出于跨平台互操作性的目的,我喜欢XML,XPath,XML Schema,XSLT和XHTML等是由W3定义和维护的标准。除此之外还有大量的XML标准(UBL,GML等)。这给了我很高的信心,当我使用XML进行系统之间的数据交换时,我会得到我期望的结果,并且开始时存在许多标准。

虽然JSON无疑有一些东西,但更有效的XML解决方案具有更广泛的可能性。如果我正在构建单个应用程序,那么我会考虑使用JSON。如果我想构建一个跨越许多系统的面向服务的体系结构,基于标准化的交换格式,那么我将使用XML - 因为我知道它几乎涵盖了所有需求。在许多情况下它可能有点矫枉过正,但在能够做事的少数人中,JSON不能让我感到高兴,因为我选择了重量级的方法。如果我构建该体系结构的一部分,我可能会诅咒架构师在我的需求被JSON覆盖时选择了XML。但是整个城镇都会有一个人需要他所有的命名空间和模式来建立自己的角色。

答案 4 :(得分:0)

一个很好的用法似乎是依赖注入(一个Spring框架)。它可以在配置和重新配置应用程序时提供很大的灵活性,而无需重新构建。

这是我使用它的唯一背景,我发现它非常有用。

答案 5 :(得分:-1)

我不得不说我老实说再也不会使用XML了。如果我需要在代码库之外存储属性,我使用属性文件(key = value)。在编写Web服务时,我使用JSON作为将两个应用程序绑定在一起的粘合剂。

一个例外是供应商首选XML的项目。他们是.NET商店,他们更喜欢SOAP和XML。我收到的数据包含N条记录,每条记录包含10个子元素,信息被解析并存储在数据库中。

对我而言,我唯一一次使用XML就是说其他系统的语言,这些语言也是XML。