Я играю с парсингом потока XML XMPP.Сложность XML-потока заключается в том, что начальный тег не закрывается до конца сеанса, т. Е. Никогда не будет получен полный DOM.
<stream:stream>
<features>
<starttls />
</features>
....
network session persists for arbitrary time
....
</stream:stream>
Мне нужно прочитать элементы XML из потокане заботясь о том, что корневой элемент не был закрыт.
В идеале это будет работать, но это не так, и я предполагаю, что это потому, что читатель ожидает закрытия корневого элемента.
XElement someElement = XNode.ReadFrom(xmlReader) as XElement;
Приведенный ниже код (который я позаимствовал у Джейкоба Реймерса ) работает, но я надеюсь, что есть более эффективный способ, который не предусматривает создание нового XmlReader и анализ строки.
XmlReader stanzaReader = xmlReader.ReadSubtree();
stanzaReader.MoveToContent();
string outerStanza = stanzaReader.ReadOuterXml();
stanzaReader.Close();
XElement someElement = XElement.Parse(outerStanza);