【问题标题】:Why is my XML reader reading every other element?为什么我的 XML 阅读器读取所有其他元素?
【发布时间】:2012-04-19 18:13:12
【问题描述】:

我构建了一个非常简单的表格,显示 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;
        }
   }
}

【问题讨论】:

    标签: c# asp.net xml xmlreader


    【解决方案1】:

    因为.Read().ReadElementContentAsString()(无参数重载)都将阅读器移动到下一个节点。

    将您的 while 条件更改为:

    while (!reader.EOF)
    

    然后添加:

    else reader.Read();
    

    【讨论】:

    • 那么您的建议是什么让读者能够正确地遍历显示所需结果的表格?
    • 这似乎不是解决方案,只是在页面尝试加载时获得一个旋转轮(没有成功)。我不确定是否需要任何其他格式。
    • 我已经查看了 SO 的解决方案并实施了各种这些修复,但似乎没有一个可以阻止读者跳过元素并且 .EOF 会导致无限循环。
    • @James - 一开始我没有注意到你的if 声明。您需要在else 声明中推动读者前进。更新了我的答案。
    • 非常感谢,生活更安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多