5

为了与客户的应用程序交互,我们使用 XML 文档。也就是说,我们通过 HTTP 发送 XML 并以相同的方式接收响应 XML 文档。客户指定了两个 XML 模式来描述请求和回复的格式。一切正常,直到有一天客户开始在响应 XML 中使用 CDATA 部分。我们设置解析器时没有注意 CDATA 部分,因此我们未能解释它们。

我的问题是:谁在这里犯了错误?我试图在 XML 标准中找到答案,但我仍然不确定。我想我不能规定在 XSD 中使用或不使用 CDATA,对吗?如果是这样,就 XSD 达成一致还不够,而是必须就 CDATA 部分达成单独的协议吗?还是必须准备好解析 CDATA 和常规文本?

我对你的个人观点和任何官方声明也很感兴趣。谢谢!

4

2 回答 2

6

CDATA 是 XML 的基本部分。不支持它意味着解析器已损坏(而不是真正的 XML 解析器(它能够处理包含文本、CDATA、实体、其他元素、注释等的元素))。

由于我在对另一个答案的评论中提到了它,所以我现在想在这里重复一遍。不期待 XML 中的 CDATA 就像期待大海中的鱼一样。

于 2010-05-21T11:49:16.963 回答
6

许多 XML 解析器将文本和 CDATA 分离出来,这是很不幸的。错误是您的错误:常规文本块和 CDATA 之间没有语义差异,因此发送者应该可以根据手头文本的需要自由地在它们之间进行选择。

好消息是调整您的代码应该是一件简单的事情。

于 2010-05-21T11:54:51.660 回答