首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略GSOAP中未知的XML元素节点

忽略GSOAP中未知的XML元素节点
EN

Stack Overflow用户
提问于 2015-04-08 11:10:23
回答 1查看 1.1K关注 0票数 7

我对GSOAP并不熟悉,所以这里可能缺少一些显而易见的东西。但我真的无法在GSOAP文档中找到它的解决方案。

我需要知道,如何在不影响其他节点的情况下,悄然忽略GSOAP中的xml中的未知节点。

例如:我有低年级学生。

代码语言:javascript
复制
class gsoap_ex
{
int foo;
char bar;    
}

下面是它的XML:

代码语言:javascript
复制
<gsoap_ex>
<foo>foo_value</foo>
<unknown>unknown_value</unknown>
<bar>bar_value</bar> 
</gsoap_ex>

到目前为止,我的gsoap解析xml直到它到达未知节点,然后它返回,而不需要进一步解析它。

代码语言:javascript
复制
print_after_parsing(gsoap_ex *obj)
{
cout<<obj->foo;
cout<<obj->bar;
}

因此,在我的上述函数中,它显示foo的值,但未设置bar的值。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2015-04-10 15:13:02

您可以配置gSOAP以提供一个函数指针来处理未知的元素,并让您的函数决定如何处理它。

https://www.cs.fsu.edu/~engelen/soapfaq.html页面讨论如何处理未知数据。这一段的第一部分是关于检测意外数据,以便您可以知道如何处理这个问题;似乎您已经了解了这一点,所以我只包含了详细介绍如何更改gSOAP行为的部分。

当接收到SOAP/消息时,我的代码似乎忽略了数据。如何在运行时检测无法识别的元素标记并让应用程序出错? ..。 另一种控制未知元素删除的方法是定义fignore回调。例如: { struct;soap_init(& soap );soap.fignore = mustmatch;//覆盖默认回调.soap_done(& soap );//重设回调} int必须匹配(struct *soap,const * tag ) {返回SOAP_TAG_MISMATCH;//每个标记必须处理} 标记参数包含违规的标记名。您还可以选择性地返回一个错误: int必须匹配(struct soap *soap,const char * tag ) { //命名空间"ns“中以"login”开头的所有标记都是可选的,如果(soap_match_tag(soap,tag,“ns:login*”)返回SOAP_OK;//必须理解(处理)返回SOAP_TAG_MISMATCH;}

想必,您会想要编写这样一个回调,为您的意外数据返回SOAP_OK

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29512971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档