相关疑难解决方法(0)

从XmlReader中读取XElement

我正在玩解析XMPP XML流.关于XML流的棘手问题是,开始标记直到会话结束才会关闭,即从未收到完整的DOM.

<stream:stream>
    <features>
       <starttls />
    </features>
    ....
    network session persists for arbitrary time
    ....
 </stream:stream>
Run Code Online (Sandbox Code Playgroud)

我需要从流中读取XML元素,而不必担心根元素尚未关闭.

理想情况下,这可以工作,但它没有,我假设它是因为读者正在等待根元素被关闭.

XElement someElement = XNode.ReadFrom(xmlReader) as XElement;
Run Code Online (Sandbox Code Playgroud)

下面的代码(我借用Jacob Reimers)确实有效,但我希望有一种更有效的方法,不涉及创建新的XmlReader并进行字符串解析.

 XmlReader stanzaReader = xmlReader.ReadSubtree();
 stanzaReader.MoveToContent();
 string outerStanza = stanzaReader.ReadOuterXml();
 stanzaReader.Close();
 XElement someElement = XElement.Parse(outerStanza);
Run Code Online (Sandbox Code Playgroud)

.net xmpp xmlreader

8
推荐指数
1
解决办法
6555
查看次数

标签 统计

.net ×1

xmlreader ×1

xmpp ×1