7

我喜欢用 C 进行服务器端编程,但需要与一些 XML 进行互操作。

我需要编写一些函数,给定一个 C 结构或嵌套结构,以及另一个描述 C 结构中元素的结构(或嵌套结构),将其作为 XML 输出。另一个函数读取 XML,验证它是否匹配 C 结构的描述,并填充 C 结构。

我很确定这已经做过很多次了,但是那里有太多关于 XML 的其他信息,以至于我没有任何运气来编写一个不会返回很多不相关内容的 Google 查询。

我不是在寻找库——只需几百行 C 代码即可解析 XML。

4

3 回答 3

4

他没有要求 XML 解析器。他正在寻求一个库,该库可以自动序列化/反序列化复杂的 C 结构与 XML 之间的序列化(这显然将依赖于下面的 XML 解析器)。

Libpdel很旧,但支持做你想做的事(通过“结构”的东西)。

于 2011-02-10T21:11:31.453 回答
2

如果您没有找到任何预制库或代码,您可以这样做的一种方法是编写一个 toXML() 函数,就像通常的 toString() 函数一样。然后是 toStruct(char*) 将 XML 反序列化回结构

于 2009-05-08T23:10:50.747 回答
2

在一般情况下,您将无法仅用几百行代码解析 XML。有几个 XML 解析器库,其中expat 浮现在脑海中。Expat 是用 C 编写的,并且具有 C 友好的 API。

假设您不会对您支持的数据类型发疯,序列化可能会更容易。

无论哪种方式,这会让您头疼的地方在于维护struct布局和 XML 模式之间的对应关系。

您可能想研究像SCEW这样的库,它们旨在隐藏 expat 实现的事件驱动性质并呈现更像 DOM 树的东西。还有各种在 expat 之上实现 SOAP 的库,这些库必然需要处理进出 XML 数据包的数据编组。

于 2009-05-09T00:58:39.913 回答