gSoap实现ONVIF中xsd__anyType到具体结构类型的转换

本文介绍了如何使用gSoap在ONVIF协议中将xsd__anyType转换为具体的结构类型,以_trt__GetProfile为例进行简单试验,探讨了soapStub.h、soapH.h等生成代码的使用,并引用了gSOAP 2.8.11 User Guide中的相关章节作为参考,强调了遵循标准化编程的重要性。
摘要由CSDN通过智能技术生成

上一篇文章已经粗略计划要讨论gsoap关于序列化/解析编程。

本文则阐述一下关于gsoap生成代码的一些重要特征方法及使用。如题,下我们从ONVIF生成的C码中,挑选简单的一个类型来试验一下与xsd__anyType之间的转换。这个试验如此重要,主要是因为,在之前我真的拿生成代码的相关结构的的一些__any字段没有办法。虽依据ONVIF文档,以及实际交互观测的XML结构中可知明明是已知的标准结构,却无奈生成被解析成any字段,主要是可能这部分字段可由厂商决定填充哪些扩展意义的结构。

简单试验

本次试验选_trt__GetProfile结构作转换例程,主要理由是这个结构实在简单,只含有一个字段;书写初始化简单。

struct _trt__GetProfile

#soapStub.h

 

#ifndef SOAP_TYPE__trt__GetProfile
#define SOAP_TYPE__trt__GetProfile (1365)
/* trt:GetProfile */
struct _trt__GetProfile
{
	char *ProfileToken;	/* required element of type tt:ReferenceToken */
};
#endif

 

头部概览与FD操作

#include "inc.h"
typedef struct soap *soap_pointer;
#include "soap.nsmap"

// anyType
int anyType_ready(void)
{
	return open("anyType.xml", O_RDWR|O_CREAT, S_IWUSR|S_IRUSR);
}
int FD_set(int* FD, int fd)
{
	int ret = *FD; *FD = fd;
	return ret;
}

注:inc.h是自组织的部分所需头依赖;

后面包含了soap.nsmap文件,你懂的,里面解开可以可以依次了解清楚包含与依赖关系;

so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值