Почему XmlReader пропускает все остальные элементы, если нет разделителя пробелов?
Я вижу странное поведение, когда пытаюсь проанализировать 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);
}