Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#非阻塞、仅转发、XML解析_C#_Xml - Fatal编程技术网

C#非阻塞、仅转发、XML解析

C#非阻塞、仅转发、XML解析,c#,xml,C#,Xml,我试图解析从网络流(XMPP)接收的XML数据。问题是,我想说明当XML被分块到数据包中,以便接收到的数据停止在标记中时发生的事件。像这样的 <node a='aa' b= 现在XmlReader将阻塞,直到最后一个数据包到达 考虑到这一点,我认为我需要以下之一: 1-一个类似于SAX的基于推送(基于事件)的解析器,但添加了一些功能,我可以向解析器提供数据块,解析器在标记完成时触发事件,保留不完整的数据块 2-类似XmlReader的拉动模型,但添加了bool HasNext()函数,当

我试图解析从网络流(XMPP)接收的XML数据。问题是,我想说明当XML被分块到数据包中,以便接收到的数据停止在标记中时发生的事件。像这样的

<node a='aa' b=
现在XmlReader将阻塞,直到最后一个数据包到达

考虑到这一点,我认为我需要以下之一:

1-一个类似于SAX的基于推送(基于事件)的解析器,但添加了一些功能,我可以向解析器提供数据块,解析器在标记完成时触发事件,保留不完整的数据块

2-类似XmlReader的拉动模型,但添加了
bool HasNext()
函数,当有足够的数据可以
无阻塞地读取
时,该函数返回true

我搜索了很多,没有在框架中或单独的库中找到。任何见解都是非常受欢迎的

注意:我很清楚其他解决方案,如生成一个单独的阻塞线程(我不想这样做),或
async
解决方案(我不想使用),因为这些代码将在控制台应用程序中运行


关于

但是,
async
听起来确实是这个工作的合适工具。它可以在控制台应用程序中很好地使用。你对这件事有什么看法?老实说,我来自C++背景,我不太喜欢它。但更重要的是,异步传播会对客户机代码提出要求,我更愿意避免这种情况。除非您的客户机有非常具体的要求,否则我会说,在您进行I/O时,现在最好提供异步支持,而不是强迫人们走同步路线。你可以看到微软的项目,比如HttpClient,已经朝着这个方向发展。不要试图模仿C++。以C#为本机--模仿.NET框架。我也来自C++背景。你知道Accnc/Acess的变体是否被提议用于下一个C++标准?
'bb' />