一张表数据转换成xml格式数据(dataset2XML)

        [WebMethod(Description = "[xml格式死板不建议使用]一张学生信息表返回XML格式(dataset转换成stream 再加载到xml)")]
        public XmlDocument test()
        {
            string MyConnStr = ConfigurationManager.AppSettings["testconnStr"];
            SqlConnection MyConn = new SqlConnection(MyConnStr);
            string MySelectStr = "select Sname, Sage, Ssex from dbo.Student";
            DataSet ds = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter(MySelectStr, MyConn);
            sda.Fill(ds);
            Stream s = new MemoryStream(); 
            ds.WriteXml(s);
            s.Seek(0, SeekOrigin.Begin);
            //转换成XmlDocument对象
            XmlDocument xd = new XmlDocument();
            XmlDeclaration xmldecl = xd.CreateXmlDeclaration("1.0", "utf-8",null);
            xd.AppendChild(xmldecl);
            xd.Load(s);
            return xd;
        }

        [WebMethod(Description = "[正规]一张学生信息表DataSet填充XML,通过添加、修改元素、属性、值")]
        public XmlDocument xd_StudnentInfo()
        {
            SqlConnection MyConn = new SqlConnection(ConfigurationManager.AppSettings["testconnStr"]);

            string sqlStr = "select Sname, Sage, Ssex from dbo.Student";
            //string sqlStr = "SELECT  Cid, Cname, parent_id, order_id FROM [boris].[dbo].[ClientApp]";

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(sqlStr, MyConn);
            da.Fill(ds);
            XmlDocument xd = new XmlDocument();
            //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            XmlDeclaration xmldecl = xd.CreateXmlDeclaration("1.0", "utf-8", null);
            xd.AppendChild(xmldecl);
            //添加根元素
            XmlElement xmle = xd.CreateElement("", "StudentInfo", "");
            xd.AppendChild(xmle);
            //寻找根元素
            XmlNode root = xd.SelectSingleNode("StudentInfo");

            //判断表中是否有数据,若有则循环读取该表每行记录
            if (ds.Tables[0].Rows.Count > 0)
            {
                for (int nI = 0; nI < ds.Tables[0].Rows.Count; nI++)
                {
                    //添加根元素下的第一层子元素
                    XmlElement xeRow = xd.CreateElement("Student");
                    root.AppendChild(xeRow);
                    //读取该表每列信息
                    for (int nC = 0; nC < ds.Tables[0].Columns.Count; nC++)
                    {
                        //判断改列是否为空,若不为空,则写入xml中
                        if(ds.Tables[0].Rows[nI][nC].ToString()!=null&&ds.Tables[0].Rows[nI][nC].ToString()!=""&&ds.Tables[0].Rows[nI][nC].ToString()!="“"+"”")
                        {
                            //添加属性
                        XmlElement xmlColumn = xd.CreateElement(ds.Tables[0].Columns[nC].ColumnName.ToString());
                            //添加属性对应的值
                        xmlColumn.InnerText = ds.Tables[0].Rows[nI][nC].ToString();
                        xeRow.AppendChild(xmlColumn);
                        }
                    }
                   
                }
            }
            return xd;
        }
/* xml格式:
<StudentInfo>
  <Student>
    <Sname>张三</Sname>
    <Sage>14</Sage>
    <Ssex>男</Ssex>
  </Student>
  <Student>
    <Sname>李四</Sname>
    <Sage>15</Sage>
    <Ssex>女</Ssex>
  </Student>
  <Student>
    <Sname>王五</Sname>
    <Sage>16</Sage>
    <Ssex>男</Ssex>
  </Student>
</StudentInfo>
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值