生成XML格式的查询结果,保存到一个XML文本中

生成XML格式的查询结果的SQL语句:
select  ID,UserName,UserPwd  from  UserInfo  for  xml auto,elements

下面一段代码说明如何在VS2005中将查询出来的XML格式的结果保存到一个叫UserInfo.xml的文件中,当然我们首先得新建一个XML文件叫UserInfo.xml.

代码如下:

SqlConnection conn  =   new  SqlConnection();
        
        conn.ConnectionString 
=  ConfigurationManager.ConnectionStrings[ " connString " ].ConnectionString;

        SqlCommand cmd 
=  conn.CreateCommand();

        cmd.CommandText 
=   " select ID,UserName,UserPwd from UserInfo for xml auto,elements " ; // 查询XML格式的SQL语句

        conn.Open();

        XmlReader xrd 
=  cmd.ExecuteXmlReader(); // 用ExecuteXmlReader方法将查询结果生成一个XmlReader对象

        XmlDocument xmldom 
=   new  XmlDocument(); // 新建一个XmlDocument对象xmldom

        XmlDeclaration declaration 
=  xmldom.CreateXmlDeclaration( " 1.0 " " utf-8 " null ); // 声明这个XML对象的版本,编码方式

        xmldom.AppendChild(declaration);
// 将声明节点添加进xmldom

        XmlElement root 
=  xmldom.CreateElement( " root " ); // 添加一个根节点root

        xmldom.AppendChild(root);
// 将根节点添加进xmldom,因为每个XML文件都要有一个根节点,所以必须添加

        XmlElement node 
=   null ; // 新建一个root下面的子节点

        XmlElement child 
=   null ; // 新建一个node下面的子节点

        XmlText text 
=   null ; // 新建一个文本节点,比如<ID>1</ID>,中间的那个1也是一个节点,是XmlTextNode类型的节点

        
while (xrd.Read()) // 逐个读取节点
         {
            
if (xrd.NodeType == XmlNodeType.Element)//如果节点类型是开始元素类型,Element是开始元素类型如<ID>,EndElement是结束节点类型如</ID>
            {
                
if (xrd.Name.Equals("UserInfo"))//如果节点元素名为UserInfo
                {
                    node 
= xmldom.CreateElement(xrd.Name);//实例化一个节点元素,名字为xrd.Name的值

                    root.AppendChild(node);
//添加到root的子节点
                }

                
else//如果节点元素名不为UserInfo,即为ID或UserName或UserPwd
                {
                    child 
= xmldom.CreateElement(xrd.Name);

                    node.AppendChild(child);
//将该节点添加到node的子节点
                }

            }

            
            
if(xrd.NodeType==XmlNodeType.Text)//如果节点类型为文本类型,即开始节点和结束节点中间的文本值
            {
                text 
= xmldom.CreateTextNode(xrd.Value);

                child.AppendChild(text);
//实例化一个文本节点,将其添加到child的子节点
            }

        }


        xmldom.Save(Server.MapPath(
" UserInfo.xml " )); // 将xmldom的内容保存到UserInfo.xml中

        xrd.Close();
// 关闭XmlReader对象.注意:用完XmlReader对象之后一定要关闭.道理和SqlDataReader对象是一样的,因为它是以独占式访问该数据库链接
        
        
// 释放数据库操作的相关资源
        conn.Close();

        conn.Dispose();

        cmd.Dispose();
别忘了加上名称空间:
using  System.Xml;
using  System.Data.SqlClient;
using  System.Text;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值