C# 如何将解析后的XML发送到XMPP服务器
这是我的一个新问题 您不会成功地想到像这样接收的XML 一个文件,它是发生意外的文件结尾错误的地方 是从哪里来的。您必须以增量方式解析XML 好的,我的问题是怎么做?如何发送未关闭的xml图片 我应该序列化对象然后发送吗C# 如何将解析后的XML发送到XMPP服务器,c#,xmpp,windows-phone-7.1,C#,Xmpp,Windows Phone 7.1,这是我的一个新问题 您不会成功地想到像这样接收的XML 一个文件,它是发生意外的文件结尾错误的地方 是从哪里来的。您必须以增量方式解析XML 好的,我的问题是怎么做?如何发送未关闭的xml图片 我应该序列化对象然后发送吗 顺便说一句,我不能使用现有的lib,因为在WindowsPhone7.5上没有。XMPP协议是基于XML代码的。基本上就是这样。与服务器的连接是通过使用一个开始标记来实现的,与认证后相比,向服务器发送和从服务器发送更多的XML消息,这些消息称为节。使用完服务器后,XML“文件”
顺便说一句,我不能使用现有的lib,因为在WindowsPhone7.5上没有。XMPP协议是基于XML代码的。基本上就是这样。与服务器的连接是通过使用一个开始标记来实现的,与认证后相比,向服务器发送和从服务器发送更多的XML消息,这些消息称为节。使用完服务器后,XML“文件”将用关闭标记关闭。然后服务器关闭套接字。因此,您可以在不关闭“文件”的情况下发送XML代码。
希望这有助于您理解。让我用一个例子(从中提取片段)详细解释一下 您不会成功地想到像这样接收的XML 一个文件,它是发生意外的文件结尾错误的地方 是从哪里来的。您必须以增量方式解析XML 当您连接到XMPP时,您将打开到服务器的连接。要执行此操作,请发送以下内容
<stream:stream
to='example.com'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>
…让我们暂时忽略身份验证,并假设这是可行的。您会注意到,仅这一部分是无效的XML(元素未关闭)。然而,对于XMPP来说,这没关系。服务器会发回它自己的消息,告诉你你可以走了。现在我们知道,我们可以发送我们的信息节。我们输入我们的信息,然后发送
<message from='juliet@example.com' to='romeo@example.net'>
<body>Romeo, romeo...</body>
</message>
罗密欧,罗密欧。。。
几秒钟后,我们决定离线
<presence type='unavailable'/>
</stream:stream>
现在让我们看看我们发送了什么
<stream:stream
to='example.com'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
version='1.0'>
<!-- A few seconds elapsed -->
<message from='juliet@example.com' to='romeo@example.net'>
<body>Romeo, romeo...</body>
</message>
<!-- A few seconds elapsed -->
<presence type='unavailable'/>
</stream:stream>
罗密欧,罗密欧。。。
因此,最后,您可以将与服务器的交互视为创建一个最终成为完全有效的XML文档的文档。当您第一次学习XMPP时,这是一种很好的思考方式
但是,您要在一段时间内创建此文档,而不是一次创建所有文档。XML库通常不认为您现在只创建文档的一部分:它们关心的是一次创建整个文档。这就是为什么传统的XML库可能对编写XMPP程序没有帮助。此外,一个简单的XML库将无法处理额外的信息,如身份验证逻辑
最后,您可以编写自己的库。但是,在选择工具时需要非常小心(正如我前面所说的,XML库可能无法处理这些部分XML创建)
总之,最后,你的问题是
如何发送未关闭的xml图片?
答案是:找一个图书馆为你做这件事。我指的不仅仅是XML部分:我指的是所有的XMPP。正确的库甚至不需要您关心XML甚至存在的事实,除非您获得真正的进步。如果你找不到图书馆
有适用于Windows Phone 7.X的LIB。你可以在这里找到他们:@Alex你能说出一个吗?因为我没有看到任何一个。例如,矩阵和IP*工作。如果其他开源lib与您的许可证兼容,它们也会进行一些修改。Matrix是美元的,IP*也可以。我将为此对自己进行修改,但如果您无法理解这一部分,您将无法成功地处理稍后出现的更难的部分,例如实现SASL。说真的,为了在JabberNet中解决这个问题,我最终将James Clark的XP移植到了C#,这是非常重要的。