Чтение XElement из XmlReader

Я играю с синтаксическим анализом 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);

8
задан sipwiz 15 November 2010 в 12:13
поделиться