我有一个将 XML 数据发送到我的服务器程序的客户端程序。服务器需要解析 XML 数据。我在 Linux 上使用 C 语言。
是否有任何 API 可用于直接从套接字解析 XML?否则我怎么知道 XML 传输是否完成?
正如我在上面试图解释的:当你使用“原始套接字”时,你一次最多只能读取一个缓冲区。您不一定会在一个套接字读取中读取整个文档;你甚至可能没有完整的线路。您需要在循环中一次将数据复制到缓冲区,直到获得所需的所有文本。这使解析复杂化:)
Expat 是一个面向流的解析器——这可能会有所帮助。
SAX 是一个“事件驱动”的解析器。您可以在 Expat 周围使用 SAX 包装器,也可以使用许多其他选择中的任何一种,包括 libXML 和 Xerces。
要点是 1)读取数据(从网络)和 2)解析数据是两个独立的活动。
对于学习套接字,我强烈推荐 Beej 最优秀的“网络编程指南”:
对于学习外籍人士,这里有一个很好的教程:
'希望有帮助..