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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值