XML Data Bindings With gsoap

關於XML Data Binding 學習過程中遇到的一些問題
首先是xsd文件的構造
什麼是xsd?
XML Schema 是基於 XML 的 DTD 替代者。
XML Schema 描述 XML 文檔的結構。
XML Schema 語言也稱作 XML Schema 定義(XML Schema Definition,XSD)。

什麼是 XML Schema?
XML Schema 的作用是定義 XML 文檔的合法構建模塊,類似 DTD。
XML Schema:
定義可出現在文檔中的元素
定義可出現在文檔中的屬性
定義哪個元素是子元素
定義子元素的次序
定義子元素的數目
定義元素是否爲空,或者是否可包含文本
定義元素和屬性的數據類型
定義元素和屬性的默認值以及固定值
XML Schema 是 DTD 的繼任者
我們認爲 XML Schema 很快會在大部分網絡應用程序中取代 DTD。
理由如下:
XML Schema 可針對未來的需求進行擴展
XML Schema 更完善,功能更強大
XML Schema 基於 XML 編寫
XML Schema 支持數據類型
XML Schema 支持命名空間

[xsd基礎教程](http://www.w3school.com.cn/schema/index.asp)

例子:emp.xsd

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="HR" xmlns:tns="HR">
  <complexType name="employee">
    <sequence>
      <element name="employed-since" type="dateTime"/>
      <element name="manages" type="tns:employee" minOccurs="0" maxOccurs="12"/>
    </sequence>
    <attribute name="name" type="string"/>
    <attribute name="ID" type="int" use="default" default="9999"/>
  </complexType>
  <element name="employee" type="tns:employee"/>
</schema>

執行wsdl2h emp.xsd,如果出現cann’t find “typemap.dat”,則從根目錄gsoap下將此文件拷到wsdl2h.exe 同目錄下即可。

再執行soapcpp2.exe emp.h,這樣會出問題
這裏寫圖片描述
根據提示import相應的文件
soapcpp2.exe emp -Igsoap/import

正確的執行過程:
這裏寫圖片描述

一般而言,這樣到此就可以把生成的文件加到項目中編譯運行了。
但是可能有時候需求不一樣導致xsd文件的構造不同
這裏我羅列了一下問題,有的是我親自碰到過,有的是網上有人遇到過
問題1[gsoap] unresolved external symbo…
這裏寫圖片描述
問題2,跟問題1相似,也是一對鏈接不過,文章鏈接
問題3,還是鏈接問題,gSOAP link problems
問題4,[gsoap] -d wsdl2h option - explanation
問題5,gSOAP連接SSL的有關問題
問題6,[gsoap] soap_dom_attribute constructo…
這些問題呢?筆者也沒有搞清楚。
但在筆者實現的例子上遇到的問題都解決了
比如問題6,遇到這樣的soap_dom_attribute問題,則在生成.h文件時加 -d選項,其對應的頭文件就是導入dom.h
wsdl2h.exe emp.h -d
然後在你的項目中把對應的dom.cpp文件加進去編譯即可。
但如何在實際項目中利用XML Data Binding,筆者還不知道如何使用?官方沒有完整的例子,按照官方的說明實現的例子會崩潰。
希望有經驗的同仁能留下相關的文檔,謝謝!

其他可借鑑學習的文檔:使用 gsoap 管理應用程序的 xml 配置文件
官方文檔XML Data Bindings With gsoap
gsoap官方詳細文檔User Guide

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章