| 函數 | 用途 | 多次呼叫 | ID 屬性 |
|---|---|---|---|
soap_put_TYPE | 序列化並輸出獨立元素 | 僅能呼叫一次 | 無 |
soap_out_TYPE | 輸出元素,支援多重引用 | 可多次呼叫 | 自動產生 id="_N" |
soap_put 內部會呼叫 soap_out + soap_putindependent。
int num = 12345; soap_put_int(soap, &num, "myint", NULL);
輸出:
<?xml version="1.0" encoding="UTF-8"?> <myint>12345</myint>
char *str = "hehe"; soap_serialize_string(soap, &str); // 必須 soap_put_string(soap, &str, "mystring", NULL);
輸出:
<?xml version="1.0" encoding="UTF-8"?> <mystring>hehe</mystring>
soap_out_int(soap, "myint", 1, &num, NULL); soap_out_int(soap, "myint", 2, &num, NULL);
輸出:
<?xml version="1.0" encoding="UTF-8"?> <myint id="_1">12345</myint> <myint id="_2">12345</myint>
須在 .h 定義結構體,執行 soapcpp2 產生序列化函數。
// stdsoap2.h 或自訂 .h
struct LogInfo {
char *content;
int id;
};
$ soapcpp2 -c myservice.h // 產生 soap_out_LogInfo 等
struct LogInfo loginfo = {"哈哈", 1};
soap_serialize_LogInfo(soap, &loginfo); // 必須
soap_put_LogInfo(soap, &loginfo, "logs", NULL);
輸出:
<?xml version="1.0" encoding="UTF-8"?> <logs> <content>哈哈</content> <id>1</id> </logs>
soap_out_LogInfo(soap, "logs", 1, &loginfo, NULL); soap_out_LogInfo(soap, "logs", 2, &loginfo, NULL);
輸出:
<logs id="_1">...</logs> <logs id="_2">...</logs>
soap_serializesoap_serialize_TYPEsoap_put 適用於單一根元素輸出;soap_out 適用於多重元素或被引用場景soap_destroy(soap)、soap_end(soap)、soap_free(soap) 釋放資源