c#中的xmlparser

时间:2011-08-27 13:05:41

标签: c# xml

我正在使用XML解析器和Oracle从数据库中获取数据。当我在gridview中显示它时,它只显示最后一个值而不是3个值。我正在使用:

doc.LoadXml(str);
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator iterator = nav.Select("//new[@*]");
drNewRow = dt.NewRow();

while (iterator.MoveNext())
{
    drNewRow = dt.NewRow();
    dt.Columns.Add("service");
    dt.Columns.Add("entity");
    dt.Columns.Add("updated");

    XPathNavigator nav2 = iterator.Current.Clone();
    XPathNavigator nav3 = iterator.Current.Clone();
    nav2.MoveToFirstAttribute();
    nav3.MoveToParent();

    // lt.Items.Add(nav3.Name + "" + nav2.Name + "" + nav2.va);

    drNewRow["service"] = nav3.Name;
    drNewRow["entity"] = nav2.Name;
    drNewRow["updated"] = nav2.Value;

    dt.Rows.Add(drNewRow);
    dt.AcceptChanges();
}
gw.DataSource = dt;
gw.DataBind();

1 个答案:

答案 0 :(得分:3)

您需要为每个新行调用dt.NewRow(),而不是仅在循环上方调用一次。否则,您只需分配一行,然后重复更改数据。

编辑:不要在循环内添加列。这将重置DataTable。在循环外添加列,但在循环内添加新行。