下面我将用ASP.NET把DataTable的数据转成XML格式,并输出生成XML文件。
数据库表position有三个字段:
字段名 字段类型
position_id int
position_name varchar
position_desc varchar
下面是Datatable转XML的生成源码:
- protected void Page_Load(object sender, EventArgs e)
- {
- //通过数据访问层把position读取到Datatable
- BizRules.PersonnelDAL pl = new PersonnelDAL();
- DataTable dt = pl.Getposition();
- StringBuilder str = new StringBuilder();
- str.Append(DataTableToXml(dt));
- this.CreateXml(str.ToString(), "test.xml");
- Response.Write("生成test.xml成功");
- }
- /// <summary>
- /// 生成文件
- /// </summary>
- /// <param name="val"></param>
- /// <param name="filename"></param>
- public void CreateXml(string val, string filename)
- {
- UnicodeEncoding ucode = new UnicodeEncoding();
- StreamWriter sw = new StreamWriter(Server.MapPath(filename));
- sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- sw.WriteLine(val);
- sw.Close();
- sw.Dispose();
- }
- /// <summary>
- /// 转换成XML格式字符串
- /// </summary>
- /// <param name="dt"></param>
- /// <returns></returns>
- public string DataTableToXml(DataTable dt)
- {
- StringBuilder strXml = new StringBuilder();
- strXml.AppendLine("<XmlTable>");
- for (int i = 0; i < dt.Rows.Count; i )
- {
- strXml.AppendLine(" <rows>");
- for (int j = 0; j < dt.Columns.Count; j )
- {
- strXml.AppendLine(" <" dt.Columns[j].ColumnName ">" dt.Rows[i][j] "</" dt.Columns[j].ColumnName ">");
- }
- strXml.AppendLine(" </rows>");
- }
- strXml.AppendLine("</XmlTable>");
- return strXml.ToString();
- }
下面看下生成XML文件的效果:
- <?xml version="1.0" encoding="utf-8"?>
- <XmlTable>
- <rows>
- <position_id>29</position_id>
- <position_name>业务员</position_name>
- <position_desc></position_desc>
- </rows>
- <rows>
- <position_id>30</position_id>
- <position_name>业务经理</position_name>
- <position_desc></position_desc>
- </rows>
- <rows>
- <position_id>31</position_id>
- <position_name>业务总监</position_name>
- <position_desc></position_desc>
- </rows>
- </XmlTable>
如果你使用DataSet,可以把DataSet转成Datatable,再使用上面的方法就可以了。