有没有办法影响 gSoap 生成的soap消息中使用的文本值?为了与现有客户端兼容,我需要肥皂服务使用带下划线的标识符,但 gsoap 使用破折号。
soapcpp2 的输入文件中的部分声明
enum class ns1__resultCode
{
OK, ///< xs:string value="OK"
ERROR_INVALID_SESSION, ///< xs:string value="ERROR_INVALID_SESSION"
...
};
当服务器发送 ERROR_INVALID_SESSION 时,soap 消息包含 ERROR-INVALID-SESSION,但我需要这是 ERROR_INVALID_SESSION,因为这是现有客户所期望的。
作为 gSOAP 约定,C/C++ 名称中的下划线被转换为 XML 中的连字符。我知道连字符在 XML 中(或曾经)比下划线更常见,这就是原因。对于XML名称有下划线而不是连字符,使用_USCORE
:ERROR_USCOREINVALID_USCORESESSION
成为ERROR_INVALID_SESSION
XML格式。点也以这种方式翻译,例如ERROR_DOTINVALID_DOTSESSION
变成ERROR.INVALID.SESSION
。其他字符用 _xHHHH 编码,例如ERROR_x002fINVALID_x202fSESSION
变成ERROR/INVALID/SESSION
. 这涵盖了高达 U+FFFF 的 Unicode 代码点。
当然,不是使用需要将 C/C++ 名称转换为 XML 的枚举,而是可以使用(宽)字符串并使用任何 Unicode 代码点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句