XML,它有什么用?

时间:2010-11-19 20:29:34

标签: xml

好吧这有点令人尴尬,但我不确定XML的用途是什么。这是正确的XML意味着什么,而不是什么是XML。我现在使用XML多年来主要用于配置文件,但这似乎是一个微不足道的用途。我也将它用作数据文件的互操作格式,但对我来说它看起来并不是特别有效。我对Web开发的经验很少,所以我认为它可能对通信很有用,但我读到的关于XML的大部分文章实际上都是XML和JSON之间的比较,而不是XML本身。

更新:到目前为止,我的感觉(基于此comment)是XML用于通用数据传输,但在最初的兴奋之后由于其低效性而受到青睐(并且因为它效率低下是通用的)进一步的想法欢迎。

11 个答案:

答案 0 :(得分:11)

我尝试总结一下我使用XML的经验:

赞成

人类可读格式:

每个人都可以通过阅读它来查看其内容。这使其成为一种易于使用且易于理解的通信形式。甚至商界人士都喜欢它(就我多年来对金融机构的经验而言),因为他们理解它,并且他们可以轻松地在消息传递系统中检查消息。只有他们才能决定哪个系统是错误的。让他们开心:)与JSON比较。 JSON远非读者友好我认为,因为关闭括号比关闭XML中的元素更难跟踪。你必须回头看看是什么开始。您不需要任何编程技能来理解XML。甚至你的祖母也可以在半小时后理解它。

平台独立性:

使用何种类型的语言和平台并不重要,您肯定会有一个解析器来阅读它。这使它可能是异构系统之间最好的通信形式。看到人们通常通过JMS队列传输XML,他们将XML发送到Web服务,他们在传输之前将对象映射到XML文档。 XML是如此基本的东西,不同的解析器没有大问题。他们都了解XML。

改造的伟大工具

您可以使用XSL和XSL-FO将XML文档转换为几乎任何内容。 HTML,PDF,TXT,CSV,其他一些XML文件等。 XSL非常强大,因为它可以根据XML的思路进行调整。它让你觉得递归,我总是喜欢在面向对象编程后很有趣。 XSL几乎适用于任何平台。您可以使用XSL从纯数据创建报表和文档。 您可以使用JAXB等技术轻松地将XML文档映射到编程对象。

使用

验证的好工具

XSD使您能够为XML文档定义一些语法。模式本身不像XML那样用户友好,但最简单的结构如occourance,parenthood,attributes等易于理解和使用。所以这也是一个工具,对商务人士来说可能是好的。 XSD几乎适用于任何平台。

XPath和XQuery

这两种技术都可以让您遍历和查询XML。优点与XSL和XSD相同,它们与平台无关。 XPath是如此有效,即使对象树apache创建了相当于它:JXPath

缺点

冗长

它可以占用任何磁盘空间。 XML使日志变大,难以读取和获取。另一方面,您可以压缩日志。甚至可以压缩Web服务或JMS消息以减少通道的负载。但即使在这种情况下,压缩也是CPU和内存开销。另一方面,根据我的经验,XML和相关技术可以缩短开发时间,并且您节省的费用远远足以购买一个CPU。 CPU比人便宜。

效率低下

什么样的对象(XPath表达式,XSL模板,XSD架构,XML解析器等)具有什么样的生命周期,这远非微不足道。什么可以缓存?很多人不正确地避免线程安全问题。这将导致你可怕的缓慢。我想强调的是, 这不是技术问题,而是误用 。很多人都被困在旧的DOM解析器上,这是一个丑陋的事情。他们在它上面抽象了一些层,并创建了用于XML处理的专有API,这很糟糕。继续,使用DOM4j或STAX或JAXB或任何标准。

创造特殊事物的虚假自由

许多公司使用XML创建了特定于域的语言或可怕的配置文件。由于它易于解析和遍历,因此他们甚至为这种全新的语言创建了解释器。语言被卡住了,从未创建过计划的开发工具。不要使用XML来制作程序。它不是用来的。不要在XPath中编程,因为它没有经过验证的设计时间。把事情做好。 XML主要用于以某种标准形式传输数据。不要在XML中重新发明轮子。对于你自己而言,这将是一个程序化的轮椅,而不是一辆汽车。

关于XML的最佳教程是ZVON我认为。如果你愿意,可以使用它们。

答案 1 :(得分:7)

作为传递数据的常用形式。那是20世纪90年代,标记标签风靡一时!

有很多灵活性和强大功能,包括验证XML文件的能力;但我觉得有趣的是,近年来出现了一些更轻量级的替代品(例如JSON)。 IE浏览器。对于大多数应用程序而言,能够以人类可读的形式轻松读取/写入数据似乎比所有验证内容更重要。

答案 2 :(得分:3)

Xml是人类可读和标准化的。每种语言都有某种类型的XML解析器。

答案 3 :(得分:2)

过于简化的解释:这只是一种方便的方法,可以为人类和机器轻松读取数据。

答案 4 :(得分:2)

XML是一种表示数据的格式 - 人类可以阅读并且机器可以处理的格式。

真的,就是这样。

至于它的“预期用途”:嗯,这有点主观。它可用于序列化,数据交换,文档标记等。实际上,它几乎可以用于任何涉及数字数据的目的。

答案 5 :(得分:1)

XML实际上是一个容器,您可以在其中放置结构化文本数据,并且它涵盖了许多不同的可能用途,例如具有语义结构的文本。结构也可以看作是树,因此您可以按层次组织事物。

它可以针对形式语法规则(DTD,XSD ...)进行验证,在另一个树结构(XSLT)中进行转换,数据可以通过不同的方式提取,如查询语言(XQuery),XML可以从树(DOM)等等。

这些技术可能性适用于各种领域的许多功能,例如数据存储,网络通信,流程组织(这里可以找到配置文件)等。

答案 6 :(得分:0)

XML非常适合布局图形用户界面。 HTML,Flex,Pivot等

答案 7 :(得分:0)

XML是一种通信标准化。虽然它比使用文本文件或二进制文件更冗长,但优点大于缺点。 XML是非常可扩展的,您需要的只是任何平台上的XML解析器,您将能够读取任何内容生成的XML数据。

XML数据意味着另一个故事,因为XML允许您创建适合您数据的标签和属性。另一种方法是为这些数据创建自己的格式,而且需要消耗数据的任何内容都必须知道如何解析它。

答案 8 :(得分:0)

XML的优势在于人类的可读性。需要结构化,人类可读布局的数据才是真正的需要。将它用于配置文件可以通过这种方式很有意义。另外,在我看来,UI布局(Flex的MXML等)是一种流行的合法用途。

然而,正如你所提到的那样,非常详细。这使得以非压缩形式传输效率非常低。

答案 9 :(得分:0)

正如其他人所说,XML是在各种应用程序之间交换信息的良好标准。它基本上是用于数据交换的世界语。

没有人喜欢XML的一点是它的冗长。如果有超过2-3级的缩进,人类将在所有这些标签中迷失。不,你不会像人们使用Lisp的括号那样在一段时间后停止看到所有这些标签。

此外,XML具有非常“企业化”的感觉。这意味着,大公司喜欢它,因为它是一个标准。但这并不意味着它对每种情况都有好处。并且不要认为解析它很快,因为硬件只是为了解析XML而不仅仅是使用软件......

答案 10 :(得分:0)

我想补充说它是可查询的。我们每小时都会收到包含100多个地点价格的XML文件。我需要从这些文件中获取单个位置的所有价格。

我将文件加载到SQL Server中的表中,然后我可以选择我感兴趣的位置的价格。我在博客上写了HERE.

另一个优点是它比我们以前必须处理的固定宽度数据文件更容易处理。如果您在数据文件的末尾添加了一列,它通常会破坏读取该文件的进程。如果您有10个不同的公司正在读取该文件,那么所有10个公司都必须在同一天进行更改。现在您可以添加一个新元素,如果客户对该元素感兴趣,客户端可以根据需要进行更新。