C and C++ XML Data Bindings {#mainpage}
===========================
[TOC]
Introduction {#intro}
============
This is a detailed overview of the gSOAP C and C++ XML data bindings and
discussed the advantages, concepts, usage, and implementation. At the end of
this document two examples are given to illustrate the application of XML data
bindings.
The first simple example `address.cpp` shows how to use wsdl2h to bind an XML
schema to C++. The C++ application reads and writes an XML file into and from
a C++ "address book" data structure. The C++ data structure is an STL vector
of address objects.
The second example `graph.cpp` shows how XML is serialized as a tree, digraph,
and cyclic graph. The digraph and cyclic graph serialization rules are similar
to SOAP 1.1/1.2 encoded multi-ref elements with id-ref attributes to link
elements through IDREF XML references, creating a an XML graph with pointers to
XML nodes.
The major advantage of XML data bindings is that your application data is
always **type safe** in C and C++ by binding XML schema types to C/C++ types.
So integers in XML are bound to C integers, strings in XML are bound to C or
C++ strings, complex types in XML are bound to C structs or C++ classes, and so
on. The structured data you create and accept will fit the data model and is
**static type safe**. In other words, by leveraging strong typing in C/C++,
your XML data meets **XML validation requirements** and satisfies **XML
interoperability requirements**.
The gSOAP data bindings are more powerful than simply representing C/C++ data
in XML. In fact, the tools implement **true serialization** of C/C++ data in
XML, including the serialization of cyclic graph structures. The gSOAP tools
also generate routines for deep copying and deep deletion of C/C++ data
structures to simplify memory management. In addition, C/C++ structures are
deserialized into managed memory, managed by the gSOAP `soap` context.
These examples demonstrate XML data bindings only for relatively simple data
structures and types. The gSOAP tools support more than just these type of
structures to serialize in XML. There are practically no limits to
enable XML serialization of C and C++ types.
Support for XML schema components is unlimited. The wsdl2h tool maps schemas
to C and C++ using built-in intuitive mapping rules, while allowing the
mappings to be customized using a `typemap.dat` file with mapping instructions
for wsdl2h.
The information in this document is applicable to gSOAP 2.8.26 and later
versions that support C++11 features. However, C++11 is not required to use
this material and the examples included, unless we need smart pointers and
scoped enumerations. While most of the examples in this document are given in
C++, the concepts also apply to C with the exception of containers, smart
pointers, classes and their methods. None of these exceptions limit the use of
the gSOAP tools for C in any way.
The data binding concepts described in this document were first envisioned in
1999 by Prof. Robert van Engelen at the Florida State University. An
implementation was created in 2000, named "stub/skeleton compiler". The first
articles on its successor version "gSOAP" appeared in 2002. The principle of
mapping XSD components to C/C++ types and vice versa is now widely adopted in
systems and programming languages, including Java web services and by C# WCF.
We continue to be committed to our goal to empower C/C++ developers with
powerful autocoding tools for XML. Our commitment started in the very early
days of SOAP by actively participating in
[SOAP interoperability testing](http://www.whitemesa.com/interop.htm),
participating in the development and testing of the
[W3C XML Schema Patterns for Databinding Interoperability](http://www.w3.org/2002/ws/databinding),
and continues by contributing to the development of
[OASIS open standards](https://www.oasis-open.org) in partnership with leading
IT companies.
Mapping WSDL and XML schemas to C/C++ {#tocpp}
=====================================
To convert WSDL and XML schemas (XSD files) to code, use the wsdl2h command to
generate the data binding interface code that is saved to a special gSOAP
header file with WSDL service declarations and the data binding interface:
wsdl2h [options] -o file.h ... XSD and WSDL files ...
This command converts WSDL and XSD files to C++ (or pure C with wsdl2h option
`-c`) and saves the data binding interface to a gSOAP header file `file.h` that
uses familiar C/C++ syntax extended with `//gsoap` [directives](#directives)
and annotations. Notational conventions are used in the data binding interface
to declare serializable C/C++ types and functions for Web service operations.
The WSDL 1.1/2.0, SOAP 1.1/1.2, and XSD 1.0/1.1 standards are supported by the
gSOAP tools. In addition, the most popular WS specifications are also
supported, including WS-Addressing, WS-ReliableMessaging, WS-Discovery,
WS-Security, WS-Policy, WS-SecurityPolicy, and WS-SecureConversation.
This document focusses on XML data bindings. XML data bindings for C/C++ bind
XML schema types to C/C++ types. So integers in XML are bound to C integers,
strings in XML are bound to C or C++ strings, complex types in XML are bound to
C structs or C++ classes, and so on.
A data binding is dual. Either you start with WSDLs and/or XML schemas that
are mapped to equivalent C/C++ types, or you start with C/C++ types that are
mapped to XSD types. Either way, the end result is that you can serialize
C/C++ types in XML such that your XML is an instance of XML schema(s) and is
validated against these schema(s).
This covers all of the following standard XSD components with their optional
attributes and properties:
| XSD Component | Attributes and Properties |
| -------------- | ------------------------------------------------------------------------------------------------------------------- |
| schema | targetNamespace, version, elementFormDefault, attributeFormDefault, defaultAttributes |
| attribute | name, ref, type, use, default, fixed, form, targetNamespace, wsdl:arrayType |
| element | name, ref, type, default, fixed, form, nillable, abstract, substitutionGroup, minOccurs, maxOccurs, targetNamespace |
| simpleType | name |
| complexType | name, abstract, mixed, defaultAttributesApply |
| all | |
| choice | minOccurs, maxOccurs |
| sequence | minOccurs, maxOccurs |
| group | name, ref, minOccurs, maxOccurs |
| attributeGroup | name, ref |
| any | minOccurs, maxOccurs |
| anyAttribute | |
And also the following standard XSD directives are covered:
| Directive | Description |
| ---------- | -----------------------------
没有合适的资源?快使用搜索试试~ 我知道了~
gsoap 2.8.38
共2000个文件
xml:2288个
html:1531个
png:982个
需积分: 13 11 下载量 65 浏览量
2016-11-15
09:19:03
上传
评论
收藏 31.96MB ZIP 举报
温馨提示
gsoap最新版本
资源推荐
资源详情
资源评论
收起资源包目录
gsoap 2.8.38 (2000个子文件)
symbol2.c 845KB
symbol2.c 845KB
stdsoap2.c 552KB
wsseapi.c 276KB
cacerts.c 263KB
soapcpp2_yacc.tab.c 225KB
soapcpp2_yacc.tab.c 225KB
wsrmapi.c 189KB
dom.c 166KB
wsse2api.c 153KB
lex.soapcpp2_lex.c 100KB
lex.yy.c 100KB
wsaapi.c 61KB
wsddapi.c 59KB
httpda.c 52KB
mecevp.c 52KB
webserver.c 50KB
sessions.c 49KB
mod_gsoap.c 49KB
mod_gsoap.c 47KB
wsseapi-lite.c 31KB
wsrmdemo.c 29KB
wssedemo.c 27KB
router.c 27KB
json.c 27KB
smdevp.c 26KB
wstdemo.c 25KB
wstapi.c 25KB
mtom-stream-test.c 20KB
mq.c 16KB
soapcpp2.c 14KB
soapcpp2.c 14KB
options.c 14KB
xml-rpc.c 14KB
tandemnw.c 13KB
rss.c 13KB
mtom-test.c 13KB
httppost.c 11KB
httpget.c 11KB
httpmd5.c 9KB
tandem.c 9KB
sslserver.c 9KB
wsademo.c 8KB
wsselite.c 8KB
httpform.c 8KB
sslclient.c 7KB
struct_timeval.c 7KB
httpposttest.c 7KB
httpposttest.c 7KB
struct_tm.c 7KB
udpserver.c 7KB
duration.c 6KB
struct_tm_date.c 6KB
httpdatest.c 6KB
logging.c 6KB
long_time.c 6KB
int128.c 6KB
init2.c 6KB
init2.c 6KB
handler.c 6KB
long_double.c 6KB
event.c 5KB
float128.c 5KB
error2.c 4KB
error2.c 4KB
googleapi.c 4KB
threads.c 4KB
mashupserver.c 4KB
md5evp.c 4KB
udpclient.c 4KB
xmas.c 4KB
server.c 4KB
plugin.c 4KB
calcserver.c 4KB
calcrest.c 3KB
chaining.c 3KB
httpgettest.c 3KB
httpgettest.c 3KB
client.c 3KB
calcclient.c 3KB
xml-rpc-weblogs.c 3KB
json-GitHub.c 3KB
ckdb.c 3KB
httpmd5test.c 3KB
xml-rpc-currentTime.c 2KB
WS-example.c 2KB
thread_setup.c 2KB
mashupclient.c 2KB
ckdbtest.c 1KB
person.c 1KB
calcclient.c 1KB
calcclient.c 1024B
interopMain.c 736B
stdsoap2.cpp 552KB
stdsoap2.cpp 552KB
stdsoap2.cpp 552KB
soapC.cpp 351KB
wsseapi.cpp 276KB
service.cpp 200KB
service.cpp 200KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
cosfrist
- 粉丝: 5
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功