XML在哪些方面表现出色,以及何时应该使用它?

13 浏览
0 Comments

XML在哪些方面表现出色,以及何时应该使用它?

我很好奇,我开发了相当强大的网站/网络应用程序,但我从未学过XML,更奇怪的是我从来没有真正感觉到有必要学习它。这不像curl或者Prepared Statements,对于它们在我了解它们是做什么和如何工作之前,我就有一种“一定有更简单的方法来做这个!”或者“一定有为此设计的东西!”的感觉。

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

我非常有兴趣听到一些关于XML的有说服力的理由,并了解它在哪些方面比JSON或MySQL更好(或者网络开发的其他方面),以及在什么情况下应该使用它!

0
0 Comments

XML被广泛应用的一个原因是它拥有众多的工具,同时也能够形式化数据描述(XML Schema)。这些工具包括XML编辑器、转换器、可视化工具等。在我工作的地方,我们的通信团队使用XML编辑器编辑内容和元数据。他们不具备足够的技术能力来手动编写JSON(或XML),但是通过给他们提供一个带有漂亮的通用前端的模板,编辑所需的文档变得非常容易。

通过一种形式化的描述格式(XSD、DTD、Relax NG等),你还可以自动验证文档的格式。它还可以作为文档中允许和不允许的内容的良好文档。

因此,XML的优势在于其丰富的工具支持和数据形式化描述的能力。

0
0 Comments

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

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

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

如果他正在进行Web开发,那么很有可能他正在生成以text/html发送的无效XHTML。个人意见:)

“JSON中不能有属性”如何:{ "firstAttribute": "value1", "secondAttribute": "value2", "content": [ /*blah*/] }?这些属性本身可以是对象,而在XML中它们只能是字符串。

-您的示例将被表示为XML:value1value2...,而不是像Pete所说的: ...。毫无疑问,这两者之间的区别可能只是语义上的,但确实有一个区分数据和元数据的论点。

Prime-但我之所以称它们为firstAttribute等,是因为它们表示XML中通常由属性表示的任何内容。如果元数据值得支持,那么为什么要提供一个无法支持结构但只能支持字符串值的残缺设施呢?

Earwicker XML中没有“字符串”。属性的内置类型是CDATA,NMTOKEN,NMTOKENS,粗略地说是字符数据,枚举值或枚举值列表。但这些字段不是元数据,它们是数据。您始终可以使用字段的名称来表示它们是属性,但这是一种解释,而不是文本,结构性标记(元素标签)和元数据(属性)之间的区别。

Kirkham-也许我表达不清楚。属性值无法利用XML中其他地方可用的递归结构特性,通过嵌套元素(或简单地说,它是任何熟悉编程语言的人所理解的“只是一个字符串”)。为什么假定结构在元数据中比在普通数据中更有用?无论如何,有许多标准用途使用XML属性,您声称它们是元数据似乎非常可疑,例如在XHTML中,关于img的所有内容都在属性中指定。

Earwicker您一定是唯一一个抱怨XML不够复杂的人!传统上,属性的用例(在SGML,HTML等中)不需要复杂类型,因此它们没有被表示,只是字符数据,枚举值或枚举值列表。我更希望其他部分被留下(DTD),并且实体机制与文档类型机制分离,但是这就是现实。

Kirkham-再次,我可能表达不清楚。我不是建议属性应该变得更复杂,以便像XML的其余部分一样强大,我建议相同的机制可以并且应该用于元数据和数据,因为如果元数据受到严格限制,则表示元数据的特殊方法没有优势。 (我认为自我描述的XML中明显缺失的“必要复杂性”是:具有命名成员的记录和具有有序项目的列表是无法区分的。但是尝试在XML中修复这个问题是没有意义的。)

Earwicker鉴于所说的机制显然很有用,并且在Web标记的主要用例中字符数据被提供给用户代理而元数据(例如与CSS类对应的枚举值列表)不被呈现,我不同意。

Kirkham-“在Web标记的主要用例中”,我完全同意您的观点。但是在您在答案中提到的第一个用例中,“用于存储异构树结构”,文本+标记的SGML模型对于这个问题是无用的。它不适用于该问题。不幸的是,这是XML专门的最流行的用例,比XHTML在现实世界中更普遍。

Earwicker我非常小心地说“XML的用途是...”而不是“XML特别适用于...”或“XML被设计用于...”。瑞士军刀是有用的,但当然不是最佳选择。

0
0 Comments

XML是一种非常轻量级的数据交换格式,适用于在前端传递数据。它具有描述性标签,使得在原始格式中更易于阅读。如果我想要一个从程序中加载的设置文件,我会选择XML文件格式。虽然我个人这样认为,但我相信还有更深入的原因可以选择一种格式而不是另一种,只是我没有足够的经验来列举出来。然而,我找到了一些站点,提出了一些好观点。

有人说XML不支持数组,这是什么意思?真可惜你删除了关于数组的部分。确实,XML不支持数组(就是说,它没有提供内置的特定功能来使其自描述)。相反,XML(滥用)相同的语法用于具有有序未命名成员的数组和具有命名成员的记录对象。XML需要模式的首要原因就是为了克服这个限制!

这是我第一次尝试为别人提问的答案,我感到有些慌张(我只是一直在提问,觉得有点不好意思,但是嘿,我在学习嘛),但这是一些很好的信息。谢谢你为我解答。

嘿,我感谢你的努力!不要担心这些小事情。再次感谢你分享你的观点和这些好链接。:)

提供的两个链接都不存在了。是否有存档可供查阅?

0