簡體   English   中英

使用C從套接字解析XML數據

[英]Parsing XML data from Sockets using C

我有一個客戶端程序,它將XML數據發送到我的服務器程序。 服務器需要解析XML數據。 我在Linux上使用C語言。

是否有可用於直接從套接字解析XML的API? 否則我怎么知道XML傳輸是否完成?

正如我上面解釋的那樣:當您使用“原始套接字”時,您一次最多只能讀取一個緩沖區。 您不必一口氣讀取整個文檔。 您甚至可能無法獲得完整的答案。 您需要一次循環地將數據復制到緩沖區中,直到獲得所需的所有文本為止。 這使解析變得復雜:)

Expat是面向流的解析器-可能會有所幫助。

SAX是“事件驅動”解析器。 您可以在Expat周圍使用SAX包裝器,也可以使用許多其他選擇中的任何一種,包括libXML和Xerces。

要點是1)(從網絡中)讀取數據,以及2)解析數據是兩個獨立的活動

對於學習套接字,我強烈推薦Beej的最出色的“網絡編程指南”:

為了學習Expat,這里有一個很好的教程:

希望有幫助。

您不解析套接字上的數據。 讀取(2)recv(2)某些在讀取或接收后可以解析或處理的數據(這些例程通過例如讀取0字節來發出EOF信號)。

存在一些針對C的XML解析庫,請參見此答案

特別是,它們中的許多(expat, libxml2等)都能夠處理提取的數據塊。 具體來說,您為它們提供了在某些XML事件上調用的例程(或當某些XML元素已被完全解析時),為它們提供了塊讀取例程,您安裝並開始了解析,最終一些XML事件或元素注冊的例程將叫做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM