Метод XNode.ReadFrom
размещает читателя после закрывающего элемента поддерева, которое он читает. Если в файле нет пробелов, это будет следующий элемент <resource>
. Этот элемент затем пропускается вызовом ReadToNextSibling
.
Следующее должно это исправить:
string path = @"E:\tmp\testxml.xml";
using( var reader = XmlReader.Create(path) )
{
bool isOnNode = reader.ReadToDescendant("resource");
while( isOnNode )
{
var element = (XElement)XNode.ReadFrom(reader);
if( !reader.IsStartElement("resource") )
isOnNode = reader.ReadToNextSibling("resource");
}
}
Если нет элементов, отличных от <resource>
, в качестве родственных элементов <resource>
, проблему также можно решить, просто используя IsStartElement
в условии цикла while.