首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

gSOAP C 語言輸出資料到 XML:soap_out 與 soap_put 完整指南

     編輯:關於C語言

兩大核心函數差異

函數用途多次呼叫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)

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>

關鍵注意事項

  1. 基本型別(int、float 等)不需呼叫 soap_serialize
  2. 字串、結構體、陣列、指標 必須先呼叫 soap_serialize_TYPE
  3. soap_put 適用於單一根元素輸出;soap_out 適用於多重元素或被引用場景
  4. 輸出完成後呼叫 soap_destroy(soap)、soap_end(soap)、soap_free(soap) 釋放資源
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved