使用libxml2解析XMPP流
parsing an XMPP stream with libxml2
我是libxml2的初学者,所以我的问题是:我在一个小型XMPP客户端工作。我有一个从网络接收的流,接收到的缓冲区在接收数据时被一块一块地馈送到我的Parser类中。我可能会收到不完整的XML数据片段:
<stream><presence from='user1@dom
,在下一次从套接字读取时,我应该得到剩余的:
ain.com to='hatter@wonderland.lit/'/>
在这种情况下,解析器应该报告一个错误。
我只对深度为0和深度为1的元素感兴趣,就像我上面的例子中的流和存在。我需要解析这种流,并为深度为0或1的每个元素创建一个xmlNodePtr(我有代表流的类,存在元素将其作为输入xmlNodePtr)。因此,这意味着我必须能够仅从开始元素创建xmlNodePtr,因为只有在通信完成时才接收相关的结束元素(在本例中)。
我想使用拉解析器。
在这种情况下最好使用什么函数?xmlReaderForIO, xmlreaderformmemory等?
您可能需要一个使用xmlcreatepushparserctext和xmlParseChunk的推送解析器。更好的选择是为XMPP选择一个现有的开源C库。例如,下面是libstrophe的代码,它已经完成了您想要的功能。
相关文章:
- 继承函数的重载解析
- 基类中的函数名称解析
- 提升精神:解析布尔表达式并简化为规范范式
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- gcc和c++17的过载解析失败
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 构造函数和转换运算符之间的重载解析
- 未解析的外部符号_MsiLocateComponentW@12.
- '尝试解析可变参数模板时无法推断出'T的模板参数
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- C++的解析器在可以区分比较和模板实例化之前会做什么?
- 如何在 cpp 中解析此文件?
- 在C++中使用 gRPC 时未解析的外部符号
- IDE (CLion) 无法解析C++模板类型
- 配置文件解析器仅返回以前的值
- 增强精神解析器规则以检测语句中的特殊结尾
- 将向量解析<string>为字符串
- 使用 jsoncpp 解析 json 数组字符串
- 提升精神 x3 - 懒惰解析器
- 使用libxml2解析XMPP流