sip*_*wiz 8 .net xmpp xmlreader
我正在玩解析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)
Mar*_*ell 11
你不应该使用字符串; 你应该可以XElement.Load在子树上使用:
XElement someElement;
using(XmlReader stanzaReader = xmlReader.ReadSubtree()) {
someElement = XElement.Load(stanzaReader);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这不是一个真正的"新"xml读取器 - 它与外部读取器密切相关(但受限于一组节点).
| 归档时间: |
|
| 查看次数: |
6555 次 |
| 最近记录: |