我已经注意到,如果我将解码的XML发送到端点,它将失败并出现错误请求,但是如果我将请求包装在CDATA中或对字符进行编码,它将运行良好,因此我的两个问题是:
为什么我需要使用CDATA或对字符进行编码?
是什么web服务让我不得不这么做呢?
在CDATA中包装消息和对字符进行编码有什么区别?
如果CDATA被解析器忽略,这是否意味着您正在尝试发送的消息将不会被处理?
我的web服务有一个名为Process的web方法,但是试图发送的消息是MessageB,所以我是否需要将MessageB的内容包装在CDATA中,因为XML Parser不会理解它?
如果我的web服务包含一个名为MessageB的web方法,它是否仍然需要包装在CDATA中或进行转义?我的情况是,我没有web方法MessageB,而是一个名为Process的东西,它通过switch语句监听MessageB请求。我之所以思考,是因为我没有将MessageB定义为web方法,这就是为什么我必须将它包装在CDATA中或对其进行转义,但我相信我的想法是错误的?
发布于 2012-05-24 21:32:56
如果不对数据进行包装或编码,它将成为主XML文档的一部分。当web服务试图解析文档时,它将找到无法映射到所需内容的元素,并将其输出。
这并不是特定于web服务的,而是在您想要将XML代码用作XML文档中的值时都适用。
使用CDATA和对字符进行编码之间几乎没有实际区别。这只是在XML文档的值中嵌入特殊字符的两种不同方式。
发布于 2012-05-24 21:30:07
像&和<这样的字符不允许出现在XML中。
标准要求它们要么用XML实体进行转义,要么包装在XML块中,这告诉<![CDATA[解析器将整个块视为纯文本。
您应该在自己的一端使用一个XML库来为您解决这个问题;您永远不应该手工构建XML。
发布于 2012-05-24 21:33:16
有些字符在XML中有特殊的含义。例如,<表示“标记的开始”,&表示“字符引用的开始”。
CDATA标记表示某些内容是纯文本而不是标记,因此<表示“小于符号”,&表示“与符号”。
https://stackoverflow.com/questions/10738453
复制相似问题