【发布时间】:2011-05-10 05:03:17
【问题描述】:
我正在尝试解析 XMPP XML 流。 XML 流的棘手之处在于开始标签直到会话结束才会关闭,即永远不会收到完整的 DOM。
<stream:stream>
<features>
<starttls />
</features>
....
network session persists for arbitrary time
....
</stream:stream>
我需要从流中读取 XML 元素,而不关心根元素是否已关闭。
理想情况下这会起作用,但它不起作用,我假设这是因为阅读器正在等待关闭根元素。
XElement someElement = XNode.ReadFrom(xmlReader) as XElement;
下面的代码(我从 Jacob Reimers 借来的)确实有效,但我希望有一种更有效的方法,不涉及创建新的 XmlReader 和进行字符串解析。
XmlReader stanzaReader = xmlReader.ReadSubtree();
stanzaReader.MoveToContent();
string outerStanza = stanzaReader.ReadOuterXml();
stanzaReader.Close();
XElement someElement = XElement.Parse(outerStanza);
【问题讨论】: