我正在使用 C,想知道就通过套接字连接进行通信而言,XML 消息是否优于文本消息?
- 除了使用 XML 之外,还有其他更好的选择吗?
- 用 C 解析 XML 的最佳解析器(或解析选项)是什么?
- 有没有C自带的标准库帮助解析XML消息?
最佳答案
协议(protocol)由您设计,由您决定。您可以使用文本或二进制通信。无论您使用什么格式,您都可以决定如何序列化/反序列化和解释数据。如果您使用 XML,则可以利用 XMLRPC 或 SOAP。您也可以使用 JSONRPC。上次在我的项目中,我以一种非常简单而有效的方式使用二进制:首先确定要调用的方法/函数。接下来的 2 个字节用于通知数据的长度(最多 64K - 1 个字节),其余为数据。注意大/小字节序。
这是非常主观的。您可以使用验证或非验证解析器。 TinyXML 是轻量级的。您可以查看 MiniXML 和 Expat。 libxml2 更胖。
到目前为止,XML 解析不在 C 或 C++ 的标准库中。您可以使用上述库。
祝你好运!
编辑:
顺便说一句,如果你想使用二进制格式来交换数据,只需使用这 3 个中的任何一个:
http://tpl.sourceforge.net/ - C 序列化库。
http://www.s11n.net/c11n/ - 一个强大而复杂的 C 序列化库。
西塞里亚 - http://sourceforge.net/projects/siseria/ ,纯 C。我为一个嵌入式系统项目编写。它运行时没有任何依赖,而且速度非常快!与其他2相比,我的非常简单,根本不使用堆和动态内存。一切都在堆栈上!
关于c - 通过 TCP/IP 套接字的 XML 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1994437/