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><" + xr.Name + "</font>";//输出元素标记的起始部分 例如:<手机型号
while (xr.MoveToNextAttribute())//在当前元素中遍历所有属性
{
outputStr += " <i>" + xr.Name + "=\"" + xr.Value + "\"</i> ";//输出属性,用斜体表示,例如 型号="6030"
}
if (xr.IsEmptyElement)//判断当前节点是否为空元素
{
outputStr += "<font color=blue>/></font><br>";//若是,则以/>结尾
}
else
{
outputStr += "<font color=blue>></font><br>";//若不是,则以>结尾
}
break;
case XmlNodeType.EndElement://如果当前节点是元素结束标记
outputStr += indent(xr.Depth);//缩进
outputStr += "<font color=blue></" + xr.Name + "></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 += " ";//输出8 * 当前节点深度 个空格
}
return spaces;
}
}
}