using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;

namespace XMLexample._3
{
	/// <summary>
	/// WriteXML 的摘要说明。
	/// </summary>
	public class WriteXML : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Button CreateXMLFileButton;
		protected System.Web.UI.WebControls.TextBox XMLFilePathTextBox;
		protected System.Web.UI.WebControls.Label Label1;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.CreateXMLFileButton.Click += new System.EventHandler(this.CreateXMLFileButton_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		static void WriteXMLbyXmlWriter(XmlWriter writer, string symbol, double price, double change, long volume)
		{
			writer.WriteStartElement("Stock");
			writer.WriteAttributeString("Symbol", symbol);
			writer.WriteElementString("Price", XmlConvert.ToString(price));
			writer.WriteElementString("Change", XmlConvert.ToString(change));
			writer.WriteElementString("Volume", XmlConvert.ToString(volume));
			writer.WriteEndElement();
		}

		private void CreateXMLFileButton_Click(object sender, System.EventArgs e)
		{
			// 创建一个表示所要生成的XML文件路径的字符串。如果该路径指向NTFS分区，则需要相关的访问权限。
			string filename = XMLFilePathTextBox.Text;
			// 创建一个写入XML数据的文件流
			System.IO.FileStream myFileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
			// 使用文件流对象创建一个XmlTextWriter对象
			XmlTextWriter myXmlWriter = new XmlTextWriter(myFileStream, System.Text.Encoding.Unicode);

			myXmlWriter.Formatting = Formatting.Indented;

			try
			{
				// 使用WriteXMLbyXmlWriter方法把数据写入XmlTextWriter对象中
				WriteXMLbyXmlWriter(myXmlWriter, "MSFT", 74.5, 5.5, 49020000);
				// 通过Close方法的调用，XmlTextWriter对象的数据最终写入XML文件
				myXmlWriter.Close();
				Page.Response.Write("生成XML文档成功!");
			}
			catch
			{
				Page.Response.Write("生成XML文档失败!请检查路径是否正确，以及是否有写入权限。");
			}
		}
	}
}
