gpt4 book ai didi

Delphi、soap 和将值包装在 cdata 中

转载 作者:行者123 更新时间:2023-12-03 15:53:28 25 4
gpt4 key购买 nike

我们从第三方导入了 wsdl。这为我们提供了一组带有调用方法的接口(interface)以及参数和返回值的类。

现在,第三方告诉我们,我们传递的宽字符串值之一必须包装在 CData 部分中。

在Delphi 2007中,有没有一种方法可以控制如何在soaprequest中将给定属性转换为xml,以便我们可以控制该值是否被编码,以及该值是否应该包装在cdata部分中还是不?

或者我们是否通过对值进行编码或不编码来控制它,并将值包装在我们自己的值上?

问候,-素食

最佳答案

Cdata 部分只是字符值,不需要通常的 XML 转义。例如,您可以有一个文字 <字符而不是使用 &lt; 对其进行转义。这就是 Cdata 的全部。如果供应商说值必须位于 Cdata 部分,那么我看到两种可能性:

  1. 供应商不明白 Cdata 的含义。在测试过程中,他们可能总是将自己的内容放在 Cdata 部分中,因为这样更易于人类阅读和编写,但没有意识到 XML 解析器并不真正关心。
  2. 供应商使用的 XML 解析器不符合规范,因此将 Cdata 部分中的值与纯文本部分中的值区别对待。

如果是前者,则忽略供应商的说明并继续使用 XML 库创建普通文本节点。库的序列化器将自动转义需要转义的字符。

但如果是后者,那么你应该告诉供应商它的系统坏了。如果它不能正确处理 Cdata,那么它还做错了什么?除非您的供应商 react 灵敏,否则我认为您运气不好。使用 Delphi SOAP,您无法控制 XML 的生成方式。您没有提供 IDomDocument ,这样您就不必调用 createCdataSection它可以控制程序发送的请求的结构。

关于Delphi、soap 和将值包装在 cdata 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3770096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com