Я играю с синтаксическим анализом XML-потока XMPP. Сложность с XML-потоком заключается в том, что начальный тег не закрывается до конца сеанса, то есть полная DOM никогда не получается.
....
network session persists for arbitrary time
....
Мне нужно читать 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);