在XML中发送二进制数据

ZDNet软件频道 时间:2002-12-04 作者:BUILDER.COM |  我要评论()
本文关键词:xml
XML通常被认为是用文本来描述数据的一种方法。但是有时候你需要输入数据而不是文本到你的XML文档。让我们来考看看如何实现这个要求。

xml通常被认为是用文本来描述数据的一种方法。例如,元素给出了文本名,元素的内容通常是基于文本的。但是有时候你需要输入数据而不是文本到你的xml文档。让我们来考虑你可能的选择。

问题:

你可能认为你可以仅仅把一些二进制数据放入开始和结束的标签里,而且你也这么做了。但不幸的是,这会引发一些潜在的问题:

  • xml中,新的一行和空格符将会把二进制数据搅乱。
  • 二进制数据可能包含空字符。
  • 二进制数据可能包含</序列。

这些问题不仅影响了二进制数据,而且影响了xml分析。如果分析器不能判定在计算什么,你将不能得到任何数据。如果数据被分析器“格式化”了,你将不能再正确地处理这些二进制数据。

解决办法:

现在至少有三个办法来解决这个问题:

  • 使用CDATA标签,直接将二进制数据嵌入到xml文档中。
  • 使用URL来查阅二进制数据。
  • 将二进制数据编码为一个基于文本的格式,以使它可以作为一个xml元素的内容。
二进制的嵌入:

如果你选择了把二进制数据嵌入xml文档,你就不必从一个远程资源那里拖来一个文件,也不必在使用前把它解码。这些数据可以立即使用。

使用这种方法就要用到xml CDATA标签,xml CDATA标签对于处理不在xml过程中分析的数据来说是一个特殊的标签。本质上,你是用了一组开始和结束标签来指出二进制数据开始和结束的位置。这个包含了CDATA的元素的值就是该二进制数据。表A提供了一个例子。

正如你所见到的,CDATA标签把字符串 <![CDATA[ 作为开始标签,并且把字符串]]> 作为结束标签来使用。xml分析器忽略这两个标签之间的一切数据。

不幸的是,这个方法有一些问题。首先,你可能会发现xml文档,分析器,以及你的二进制数据里使用的符号集是有问题的。其次,你的二进制数据可能含有]]>串。这个序列将会告诉xml分析器截止到哪里是不需要分析的数据,即使它并不真的是二进制数据的结尾——这就是混乱的情况。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134