你可能想你只需要放置一些二进制数据到开始和结束标签里面就万事大吉了,不幸的是这可能导致几个潜在的问题:
这些问题既影响二进制数据也影响xml解析。如果解析器不能决定如何继续,你就不能提取任何数据。如果解析器“格式化”数据,那么你就不能正确的处理那些二进制数据。
解决这个问题至少有三种方案:
这个解决方案允许你直接将二进制数据放到xml文档中。使用这个方法,你不用从一个远程系统取一个文件或者在使用前解码,数据可以马上处理。
要使用这个方法,使用xml的CDATA标签,它是一个特殊的标签,用于处理那些在xml解析期间不能被解析的数据。基本上,你使用一个开始标签和一个结束标签表示二进制数据的开始和结束位置就可以了。包含在CDATA中的元素值将成为二进制数据,例如:
<Product> <SKU>99238</SKU> <Description>Super Gidgetidoo</Description> <Picture> <![CDATA[q???????????T???]]> </Picture> </Product>
就像你看到的那样, CDATA标签使用序列“<![CDATA[”作为开始标签并使用“]]>”作为结束标签。xml解析器忽略标签之间的所有数据。
不幸的是,这个方法有一些问题。首先,你可能遇到xml文档、解析器和你的二进制数据使用的字符集的问题。其次,你的二进制数据可能包含“]]>”序列,这会使得xml解析器以为它是不用解析数据的结束,虽然它实际不是二进制数据的结尾,这是非常麻烦的情况。