gpt4 book ai didi

c - gSOAP - XML 数据到 C 结构(也由 gSOAP 生成)

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:26 25 4
gpt4 key购买 nike

我有一些关于使用 gSOAP 的问题用于解析 XML。如果有人对此有经验,请给我一些帮助。谢谢:D

我以前从不知道 XML,现在我需要将 XML 解析为 C 中的结构。然后我发现了一些使用 gSOAP 数据绑定(bind)的建议。是的!它帮助我生成一个头文件,其中包含来自 XSD(XML 架构)的结构。但是现在,我也不知道如何处理结构或 XML 文件。我需要将 XML 数据自动放入结构中(我的意思是,如果 XSD 发生变化,代码也不必更改)。关于与我的问题相关的 gSOAP,有什么我不知道的吗?或者我必须自己编写代码才能输入数据?感谢您的关心和时间。

干杯!

----加法----

这就是我所做的,我在 Linux 的终端中工作:我有一个名为 try.xsd 的 XSD 文件

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='Root'>
<xs:complexType>
<xs:sequence>
<xs:element name='Customers'>
<xs:complexType>
<xs:sequence>
<xs:element name='Customer' type='xs:string' minOccurs='0' maxOccurs='unbounded' />
<xs:element name='Order' type='xs:string' minOccurs='0' maxOccurs='unbounded' />
</xs:sequence>
<xs:attribute name='customerid' use='required' type='xs:integer'/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

然后我将 gSOAP 与此 XSD 文件一起使用:

我用 wsdl2h 生成了 try.h 文件

wsdl2h -c -a -o try.h -t typemap.dat try.xsd

然后我生成了其余文件:ns1.nsmap、soapC.c soapH.H soapClient.c soapServer.c soapStub.h

soapcpp2 -c -t -L -I "/home/celia/Documents/gsoap-2.7/gsoap/import"try.h

然后制作 .c 文件并包含 soapH.h 和 ns1.nsmap。还要在您的文件夹中包含 stdsoap2.h 和 stdsoap2.c(您可以在 gSOAP 包中找到它们)。

在文件 soapStub.h 中,构建了结构:

....
struct _ns1__Root_Customers
{
int __sizeCustomer; /* sequence of elements <Customer> */
char **Customer; /* optional element of type xsd:string */
int __sizeOrder; /* sequence of elements <Order> */
char **Order; /* optional element of type xsd:string */
char *customerid; /* required attribute of type xsd:integer */
}

struct _ns1__Root
{
struct _ns1__Root_Customers Customers; /* required element of type ssrf1:Akar-Customers */
}
....

所以现在,我很困惑如何编写代码使 XML 数据自动转到此结构,而无需手动“Customers->customerid = node->children->content”。因此,如果 XSD 发生变化,我也不必更改代码。

最佳答案

在 C 中没有序列化/反序列化对象(不像在 C++ 或 c# 中),其中有类填充结构。您必须借助“read”和“memcpy”函数自己编写代码。这就是我所做的,我遇到了同样的问题,但现在也许有一些我不知道的新东西。

关于c - gSOAP - XML 数据到 C 结构(也由 gSOAP 生成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19564060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com