日期:2014-05-18  浏览次数:20893 次

关于XML的Save方法的一个小小的问题?
小弟是菜鸟中的菜鸟,现在学习中遇到了一些问题想不明白,问的不好做的不对的,欢迎大牛来拍砖




 static void Main(string[] args)
  {
  string sqlcon = @"Data Source=PC-201206030428\Dool;Initial Catalog=MyName;User Id=sa;Password=*****";
  using (SqlConnection con = new SqlConnection(sqlcon))
  {
  string sql = "select * from ADOPerson";
  using (SqlCommand cmd = new SqlCommand(sql, con))
  {
  if (con.State == System.Data.ConnectionState.Closed )
  {
  con.Open();
  }
  SqlDataReader reader = cmd.ExecuteReader();
  using (reader)
  {
  if (reader.HasRows )
  {
  XElement xdoc = new XElement("Root");
  while (reader.Read())
  {
  int id = reader.GetInt32(1);
  string name = reader.GetString(2);
  char sex =Convert .ToChar ( reader[3]);
  int age = reader.GetInt32(4);
   
  XElement xperson = new XElement("Person");
  xdoc.Add(xperson);
  XElement xname = new XElement("Name");
  xperson.Add(xname );
  XElement xsex = new XElement("Sex");
  xperson.Add(xsex);
  XElement xage = new XElement("Age");  
  xperson.Add(xage );
  xperson.SetAttributeValue("id", id);
  xname.Value = name;
  xage.Value = age.ToString ();
  xsex.Value = sex.ToString ();
   
  } //上面是我从数据库里导出来的1000条数据,要把他们放到xml文件里
  xdoc.Save("E:\\derive.xml"); //我的问题是这里的save方法是怎么做到一次性把一千条数据写到xml文件里的呢?上面的while循环了1000次那些值都存到哪里去了呢?save方法里面是怎样的运行原理?
  }
  }
  }
  }
  }

------解决方案--------------------
代码中没有1000次这个逻辑。

while (reader.Read())
{
...
}

这个循环表示,读取一条数据处理一条数据,直到读完。
------解决方案--------------------
while (reader.Read())循环读取每一条数据,然后添加到 xdoc中,直到循环完毕,然后保存doc
------解决方案--------------------
C# code

  while (reader.Read())
  {
     ...
     xdoc.Add(xperson);
     ...
  }

------解决方案--------------------
数据多的话,最好使用XmlTextWriter,以提高性能

http://msdn.microsoft.com/zh-cn/library/wkee9k2s%28VS.80%29.aspx
------解决方案--------------------
同意楼上意见!