为了与客户的应用程序进行交互,我们使用XML文档。也就是说,我们通过HTTP发送XML并以相同的方式接收响应XML文档。客户指定了两个描述请求和回复格式的XML模式。一切正常,直到有一天客户开始在响应XML中使用CDATA部分。我们设置我们的解析器没有注意CDATA部分,所以我们没有解释它们。
我的问题是:谁在这里弄错了?我试图在XML标准中找到答案,但我仍然不确定。我想我不能在XSD中使用或不使用CDATA,是吗?如果是这样,是不是就XSD达成一致意见,但是必须就CDATA部分达成单独的协议?或者一个人有义务准备解析CDATA和普通文本吗?
我也对你的个人观点和任何官方声明感兴趣。谢谢!
答案 0 :(得分:6)
CDATA是XML的基本组成部分。不支持它意味着解析器被破坏(而不是真正的XML解析器(能够处理包含文本,CDATA,实体,其他元素,注释等等的元素等)。)
由于我在另一个答案的评论中提到它,我现在有一个在此重复它的冲动。不期望XML中的CDATA就像not expecting fish in the sea。
答案 1 :(得分:6)
许多XML解析器将文本和CDATA分开,这是不幸的。错误是你的:普通文本块和CDATA之间没有语义差异,因此发送者可以根据手头文本的需要自由选择它们。
好消息是,调整代码应该是一件简单的事情。