Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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发送到XMPP服务器_C#_Xmpp_Windows Phone 7.1 - Fatal编程技术网

C# 如何将解析后的XML发送到XMPP服务器

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“文件”

这是我的一个新问题

您不会成功地想到像这样接收的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#,这是非常重要的。