Я вижу странное поведение, когда пытаюсь разобрать XML, используя класс LINQ XmlReader. Тестовый пример ниже: похоже, я использую (XElement)XNode.ReadFrom(xmlReader)
или один из методов Read()
в XmlReader, он пропускает второй элемент bar
во входном XML. Если между </bar>
и <bar>
добавлено какое-либо пробельное пространство, он будет правильно разбирать второй элемент bar
.
Есть ли у кого-нибудь представление о том, почему поток ввода запутался и как обойти эту проблему?
[Test]
[Explicit]
public void ShouldParseCorrectNumberOfElements()
{
var xml = @"<foo><bar>wtf</bar><bar>wtf2</bar></foo>";
XmlReader xmlReader = XmlReader.Create(new MemoryStream(Encoding.UTF8.GetBytes(xml)));
int count = 0;
xmlReader.MoveToContent();
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "bar")
{
var element = xmlReader.ReadOuterXml();
Console.WriteLine("just got an " + element);
count++;
}
}
Assert.AreEqual(2, count);
}