C# 为什么我的XML阅读器要读取所有其他元素?

C# 为什么我的XML阅读器要读取所有其他元素?,c#,asp.net,xml,xmlreader,C#,Asp.net,Xml,Xmlreader,我构建了一个非常简单的表,它显示4列4行。当执行以下代码时,它会显示.xml文件中的每个其他元素。它不区分每个表行。它通读没有任何问题,我已经运行了xml验证器,所以它不是一个语法问题 public partial class lblXmlOutput : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { XmlReaderSettings settings =

我构建了一个非常简单的表,它显示4列4行。当执行以下代码时,它会显示.xml文件中的每个其他元素。它不区分每个表行。它通读没有任何问题,我已经运行了xml验证器,所以它不是一个语法问题

public partial class lblXmlOutput : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ConformanceLevel = ConformanceLevel.Document;
        settings.IgnoreWhitespace = true;
        settings.IgnoreComments = true;

        XmlReader reader = XmlReader.Create(Server.MapPath("Part2XMLex.xml"), settings);

        string result = "";

        while (reader.Read())
        {
            if (reader.IsStartElement("td"))
                result += reader.ReadElementContentAsString();

            txtOutput.Text = result;
        }
   }
}
因为
.Read()
.ReadElementContentAsString()
(无参数重载)都将读取器移动到下一个节点

将您的
while
条件更改为:

while (!reader.EOF)
然后添加:

else reader.Read();

那么,您的建议是什么,允许读者正确地遍历显示所需结果的表?这似乎不是解决方案,只是在页面尝试加载时获得一个旋转的轮子(没有成功)。我不确定是否需要任何其他格式。我查看了解决方案,并实施了各种修复,但似乎没有一个能够阻止读者跳过元素。EOF会导致无限循环。@James-我一开始没有注意到你的
if
语句。您需要在
else
语句中向前移动读卡器。更新了我的答案。非常感谢,生活更安全。