如何使用和解释XML?

时间:2011-02-15 08:35:45

标签: xml language-agnostic

我的理解是XML用于使用用户定义的标签在两个应用程序之间进行通信。

我做了一些研究,发现了许多关于XML的教程,但没有描述在哪里使用XML。

我的理解是XML因用户友好而闻名。我的意思是你可以定义自己的自定义标签。但我想知道这些标签在何处以及如何解释?

请指出有关使用XML的位置以及如何解释XML文件含义的资源,以便我能够理解其基本知识并有效地使用它。

4 个答案:

答案 0 :(得分:3)

你很难理解XML在大局中的位置是很常见的。

当您向某人发送带有Word附件的电子邮件时,涉及多个级别的协议:有TCP / IP,有电子邮件协议,还有Word文档格式。但最终,如果他们理解英语,并了解您所谈论的内容,那么您的信息对收件人来说只意味着什么。 Word为文档格式提供了一种标准(种类),但是对于要理解的消息,发送者和接收者仍然需要一个共同的词汇表来讨论他们想要讨论的主题。 XML符合与Word相同的图片级别 - 它标准化了消息的格式,但让用户可以自由决定自己的词汇表。有许多词汇表已经在XML之上标准化(用于财务信息,SVG图形,音乐,数学公式等等),但XML的优势在于你可以将它用于你喜欢的任何词汇表,同时仍然可以使用它。下面的常见格式和语法的好处。

但正如您可以将Word文档发送给因为不会说英语而无法理解它的人,因此您可以将包含XBRL财务数据的XML文档发送给不会理解的人,因为他们不懂XBRL词汇。

答案 1 :(得分:0)

XML stands for Extensible Markup Language。它提供了一组用于以机器可读形式构造和编码文档的规则。

XML说明了文档的语法和文档中对象之间的关系,但对于文档中文档或对象的语义或含义却很少。

在处理文档的代码中捕获语义 - 或者如您所说,它们是如何被解释的 - 。

编程环境必须提供一种或多种方法来处理 - 解析 - XML内容。但如上所述,一旦解析了解释,解释就会留在应用程序中。

例如,Ruby Programming Language有多个可用的XML解析器。其中两个是REXMLXmlSimple

请记住,XML解析器可以帮助您处理文档的语法,但意义来自您的代码以及您如何解释文档的内容和结构。

例如,以下文档可能代表很多内容,但我的代码会将其解释为一个配置文件,它指定了一组服务器,它们的操作系统,操作系统版本和IP地址。

<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
    <server name="sahara" osname="solaris" osversion="2.6">
      <address>10.0.0.101</address>
      <address>10.0.1.101</address>
    </server>
    <server name="gobi" osname="irix" osversion="6.5">
      <address>10.0.0.102</address>
    </server>
    <server name="kalahari" osname="linux" osversion="2.0.34">
      <address>10.0.0.103</address>
      <address>10.0.1.103</address>
    </server>
  </config>

答案 2 :(得分:0)

正如您所说,我们使用XML在应用程序之间传递数据,通常这些应用程序是用不同的编程语言编写的,因此XML为我们提供了一种通用的数据格式。

当我们进入applciation代码本身时,使用langauges自然结构最方便。例如:

<Order>
       <Customer name="bill" phone="123-345456" >   
       etc.       
</Order>

在某些环境中(例如在Enterprise Service Bus产品中),您实际使用XML,定义XML的转换。所以你可以谷歌搜索各种ESB产品并阅读它们。我为IBM和Sos工作我熟悉WebSphere ESB而且非常有趣的是有硬件XML处理产品,例如IBM的DataPower,它们可以真的加快了XML处理速度。

但是在通常的编程语言中,编写代表数据的编程结构编写应用程序代码非常方便,所以在Java中我们喜欢Order类和Customer类等等。

然后将XML转换为对象,我们就可以编写自然代码,例如

 customer.getName()

因此,不同的编程环境将有不同的appraoches来处理这些类型的转换。在Java世界中,有几种方法可以在XML和Java之间进行映射。现在越来越多地使用JAX / B,我在this article中有一个简短的例子,你会看到很少有代码要编写来执行转换。

答案 3 :(得分:0)

您的问题听起来就像是在比较XML和HTML,并想知道浏览器如何猜测自定义标签的含义。事实上它不能。您必须在XSLT中编写转换脚本并将其连接到XML文件(例如XML Outputting - PHP vs JS vs Anything Else?)。当然,XML不是仅用于添加转换步骤的工具。在这种情况下,当您想要使用原始数据构建HTML页面时,可以使用它。