博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

E3读取xml文档

Posted on 2006-03-16 22:40  ╁蓝驿┲→  阅读(131)  评论(0编辑  收藏  举报

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;


namespace example_10
{
 /// <summary>
 /// _3 的摘要说明。
 /// </summary>
 public class _3 : Page
 {
  protected Button Button1;

  private void Page_Load(object sender, EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
  }

  #region Web 窗体设计器生成的代码

  protected override void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }

  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.Button1.Click += new EventHandler(this.Button1_Click);
   this.Load += new EventHandler(this.Page_Load);

  }

  #endregion

  private void Button1_Click(object sender, EventArgs e)
  {
   DisplayXmlDocument();
  }

  private void DisplayXmlDocument()
  {
   string filePath = Server.MapPath("手机信息.xml");
   XmlTextReader xr = new XmlTextReader(filePath);
   string outputStr = "";

   try
   {
    while (xr.Read())//读取节点
    {
     switch (xr.NodeType)
     {
      case XmlNodeType.Element://如果当前节点是元素标记

       outputStr += indent(xr.Depth);//根据当前节点的深度输出不同的缩进
       outputStr += "<font color=blue>&lt;" + xr.Name + "</font>";//输出元素标记的起始部分 例如:<手机型号

       while (xr.MoveToNextAttribute())//在当前元素中遍历所有属性
       {
        outputStr += "&nbsp;<i>" + xr.Name + "=\"" + xr.Value + "\"</i>&nbsp;";//输出属性,用斜体表示,例如 型号="6030"

       }

       if (xr.IsEmptyElement)//判断当前节点是否为空元素
       {
        outputStr += "<font color=blue>/&gt;</font><br>";//若是,则以/>结尾
       }
       else
       {
        outputStr += "<font color=blue>&gt;</font><br>";//若不是,则以>结尾
       }
       break;

      case XmlNodeType.EndElement://如果当前节点是元素结束标记

       outputStr += indent(xr.Depth);//缩进

       outputStr += "<font color=blue>&lt;/" + xr.Name + "&gt;</font><br>";//输出元素标记,如</手机型号>
       break;

      case XmlNodeType.Text://如果当前节点是文本类型

       if (xr.Value.Length != 0)
       {
        outputStr += indent(xr.Depth);

        outputStr += "<font color=red>" + xr.Value + "</font><br>";//用红色字体输出文本,如 诺基亚
       }

       break;

     }
    }

    Response.Write(outputStr);//将整个长字符串输出到页面上
   }
   catch (Exception err)
   {
    Response.Write(err.ToString());
   }
   finally
   {
    xr.Close();//关闭XmlTextReader
   }
  }

  private string indent(int number)
  {
   string spaces = "";

   for (int i = 0; i < number; i++)
   {
    spaces += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";//输出8 * 当前节点深度 个空格
   }

   return spaces;
  }
 }
}