这是来自Getting anwser from Jabber Server
的新问题您不会成功地考虑您收到的XML 一个文件,它是发生意外的文件结尾错误的地方 是来自。您必须以增量方式解析XML。
好的我的问题是怎么样的?我怎样才能发送xml的封闭pice?
我应该序列化对象然后发送吗?
顺便说一句。我不能使用现有的lib,因为Windows Phone 7.5没有。
答案 0 :(得分:2)
让我详细说明一个例子的解释(摘录自here)。
您不会成功地考虑您收到的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>
因此,最后,您可以考虑与服务器的交互,就像创建一个EVENTUALLY成为完全有效的XML文档的文档一样。当您第一次了解XMPP时,这是一种思考问题的好方法。
但是,您在一段时间内创建此文档,而不是一次创建。 XML库通常不会认为您现在只是创建文档的一部分:他们只关心一次创建整个文档。这就是传统XML库在编写XMPP程序时可能对您没有帮助的原因。此外,一个简单的XML库无法处理额外的信息,如身份验证逻辑。
最后,您可以编写自己的库。但是,在选择工具时需要非常小心(就像我之前所说的,XML库可能无法处理这些部分XML创建)。
无论如何,最后,你的问题是......
How can I send not closed pice of xml?
答案是:找一个图书馆为你做。我并不仅仅意味着XML部分:我的意思是所有的XMPP。正确的库甚至不需要您关注XML甚至存在的事实,除非您真正进步。如果你找不到图书馆......
答案 1 :(得分:0)
XMPP协议基于XML代码。基本上它直到这个。通过使用开始标记与服务器建立连接,并且在进行身份验证之后,将更多XML消息发送到服务器或从服务器发送,称为节。完成服务器后,将使用结束标记关闭XML“文件”。 。然后服务器关闭套接字。因此,您可以在不关闭“文件”的情况下发送XML代码。 希望这有助于您理解。