通用XML读取器

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();

            }

        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值