通用XML读取器

来源:互联网 发布:淘宝店铺介绍怎么填写 编辑:程序博客网 时间:2024/06/05 04:13
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Xml;using System.Data.SqlClient;public partial class Default2 : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        //声明XmlReader对象,因为从数据读的时候返回的是这个对象,方便两种方式读取        XmlReader reader = null;        SqlConnection conn = null;        SqlCommand cmd = null;        try        {            //此变量用判断是否从数据集读还是文件中读            bool israd = true;            conn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;Integrated Security=True");            conn.Open();            cmd = conn.CreateCommand();            cmd.CommandText = "SELECT [EmployeeID], [City], [Title] FROM [Employees] for xml auto";            //使用三元运算符创建XmlReader对像            reader = israd ? cmd.ExecuteXmlReader() : new XmlTextReader(Request.MapPath("books.xml"));            while (reader.Read())            {                switch (reader.NodeType)                {                                                //是否是声明                    case XmlNodeType.XmlDeclaration:                        Response.Write(Server.HtmlEncode("<?xml version='1.0'?>") + "</br>");                        break;                                      //是否是指今                    case XmlNodeType.ProcessingInstruction:                        Response.Write(Server.HtmlEncode("<?" + reader.Name + " " + reader.Value + "?>") + "</br>");                        break;                        //是否是元素                    case XmlNodeType.Element:                        Response.Write(Server.HtmlEncode("<")+reader.Name);                        //判断某个元素是否具有属性                        if (reader.HasAttributes)                        {                            //使用循环读出里面的所有属性                            for (int i = 0; i < reader.AttributeCount; i++)                            {                                //使用这个方法依次移动属性                                reader.MoveToAttribute(i);                                Response.Write("  "+reader.Name+"=" + reader[i]);                            }                        }                       Response.Write(Server.HtmlEncode(">")+"</br>");                        break;                        //是否是文本                    case XmlNodeType.Text:                        Response.Write(reader.Value+"</br>");                        break;                        //是否是注释                    case XmlNodeType.Comment:                        Response.Write(Server.HtmlEncode("<!--" + reader.Value + "-->") + "</br>");                        break;                        //是否是结束元素                    case XmlNodeType.EndElement:                        Response.Write(Server.HtmlEncode("</" + reader.Name + ">") + "</br>");                        break;                }            }        }        catch(Exception ex)        {            Response.Write(ex.Message);        }        finally        {            //关闭读取器            if (reader != null)            {                reader.Close();            }            //关闭数据库连接            if (conn.State == ConnectionState.Open)            {                conn.Close();            }        }    }}