我正在尝试从Xml下面检索质询元素,
我正在使用下面的代码
string Xmlstring = "<?xml version=\"1.0\"?><stream:stream id=\"3DAC47EA\" from=\"chat.facebook.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\" xml:lang=\"en\"><stream:features><mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features><challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9QjNBOUU4NzJFQUJGNkQ5RDM0RTZDNjgzMjkyMTBGOEQ=</challenge>";
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(Xmlstring);我收到错误消息“文件出现意外结束。以下元素未关闭: stream:stream。第1行,位置510。”
发布于 2012-04-24 18:09:05
错误说明了一切,您尝试加载的xml无效,并且流元素未关闭您的xml
<stream:stream id=\"3DAC47EA\" from=\"chat.facebook.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\" xml:lang=\"en\">
<stream:features>
<mechanisms xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">
<mechanism>
X-FACEBOOK-PLATFORM
</mechanism>
<mechanism>
DIGEST-MD5
</mechanism>
</mechanisms>
</stream:features>
<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">
dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9QjNBOUU4NzJFQUJGNkQ5RDM0RTZDNjgzMjkyMTBGOEQ=
</challenge>您的文档缺少根节点,并且"stream“元素未关闭。更正xml文档将修复错误。
流元素必须固定为
<stream:stream id=\"3DAC47EA\" from=\"chat.facebook.com\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx.jabber.org/streams\" version=\"1.0\" xml:lang=\"en\">
...
</stream:stream>如果流元素是文档的根,则其他元素位于流元素中。
由于您在代码示例中将其作为字符串(在您的问题中),您可以像下面一样添加缺少的流,并像往常一样将其传递给xmlreader。
(*注意:这只是基于您的示例的一种变通方法,但是我不明白您是如何从服务器获得无效的XML响应的。)
Xmlstring = Xmlstring + "</stream:stream>";这使xml有效,您可以照常将其加载到文档中。
https://stackoverflow.com/questions/10295721
复制相似问题