相关疑难解决方法(0)

如果没有空格分隔符,为什么XmlReader会跳过所有其他元素?

当我尝试使用LINQ XmlReader类解析XML时,我看到了奇怪的行为.下面的测试用例:看起来我是否使用XmlReader (XElement)XNode.ReadFrom(xmlReader)上的Read()方法之一,它错过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);
    }
Run Code Online (Sandbox Code Playgroud)

c# xml linq whitespace

19
推荐指数
2
解决办法
9076
查看次数

标签 统计

c# ×1

linq ×1

whitespace ×1

xml ×1