gsoap 如何防止枚举值的下划线翻译
gsoap how to prevent underscore translation for enum values
有没有办法影响在 gSoap 生成的 soap 消息中使用哪些文本值?为了与现有客户端兼容,我需要 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 因为这是现有客户所期望的。
C/C++ 名称中的下划线在 XML 中被转换为连字符作为 gSOAP 约定。我知道连字符在 XML 中比下划线更常见(或曾经),这就是原因。要在 XML 中使用下划线而不是连字符,请使用 _USCORE
:ERROR_USCOREINVALID_USCORESESSION
在 XML 中变为 ERROR_INVALID_SESSION
。点也以这种方式翻译,例如ERROR_DOTINVALID_DOTSESSION
变为 ERROR.INVALID.SESSION
。其他字符使用 _xHHHH 编码,例如ERROR_x002fINVALID_x202fSESSION
变为 ERROR/INVALID/SESSION
。这涵盖了高达 U+FFFF 的 Unicode 代码点。
当然,除了使用需要将 C/C++ 名称转换为 XML 的枚举之外,还可以使用(宽)字符串并使用任何 Unicode 代码点。
有没有办法影响在 gSoap 生成的 soap 消息中使用哪些文本值?为了与现有客户端兼容,我需要 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 因为这是现有客户所期望的。
C/C++ 名称中的下划线在 XML 中被转换为连字符作为 gSOAP 约定。我知道连字符在 XML 中比下划线更常见(或曾经),这就是原因。要在 XML 中使用下划线而不是连字符,请使用 _USCORE
:ERROR_USCOREINVALID_USCORESESSION
在 XML 中变为 ERROR_INVALID_SESSION
。点也以这种方式翻译,例如ERROR_DOTINVALID_DOTSESSION
变为 ERROR.INVALID.SESSION
。其他字符使用 _xHHHH 编码,例如ERROR_x002fINVALID_x202fSESSION
变为 ERROR/INVALID/SESSION
。这涵盖了高达 U+FFFF 的 Unicode 代码点。
当然,除了使用需要将 C/C++ 名称转换为 XML 的枚举之外,还可以使用(宽)字符串并使用任何 Unicode 代码点。