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.Text;
public partial class xml : System.Web.UI.Page

{
XmlDocument xmldoc;
XmlElement xmlelem;
XmlNode xmlnode;
protected void Page_Load(object sender, EventArgs e)

{
// createXmlFile();
//createXmlFile2();
//createXmlNode();
//editXmlFile();
// removeXmlNode();
editAttribute();
}

/// <summary>
/// 创建xml文件1
/// </summary>
public void createXmlFile()

{
xmldoc = new XmlDocument();
xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration,"","");
xmldoc.AppendChild(xmlnode);
xmlelem=xmldoc.CreateElement("", "Employees","");
xmldoc.AppendChild(xmlelem);
for (int i = 0; i < 3; i++)

{
XmlNode root = xmldoc.SelectSingleNode("Employees");
XmlElement xe1 = xmldoc.CreateElement("node");
xe1.SetAttribute("genre","刘浩");
xe1.SetAttribute("ISBN", "2-3631-4");
XmlElement xesub1 = xmldoc.CreateElement("title");
xesub1.InnerText = "c#高级编程";
xe1.AppendChild(xesub1);
XmlElement xesub2 = xmldoc.CreateElement("author");
xesub2.InnerText = "詹姆斯";
xe1.AppendChild(xesub2);
XmlElement xesub3 = xmldoc.CreateElement("price");
xesub2.InnerText = "58.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);
xmldoc.Save(Server.MapPath("data.xml"));
}
}

/// <summary>
/// 创建xml文件
/// </summary>
public void createXmlFile2()

{
XmlTextWriter xmlwrite;
string strfilename;
strfilename = Server.MapPath("data1.xml");
xmlwrite = new XmlTextWriter(strfilename, Encoding.Default);
xmlwrite.Formatting = Formatting.Indented;
xmlwrite.WriteStartDocument();
xmlwrite.WriteStartElement("Employees");
xmlwrite.WriteStartElement("node");
xmlwrite.WriteStartAttribute("genre","刘洪波");
xmlwrite.WriteStartAttribute("ISBN"," 2 - 3631 - 4");
xmlwrite.WriteStartElement("title");
xmlwrite.WriteString("c#高级编程");
xmlwrite.WriteEndElement();
xmlwrite.WriteStartElement("author");
xmlwrite.WriteString("刘浩");
xmlwrite.WriteEndElement();
xmlwrite.WriteStartElement("price");
xmlwrite.WriteString("53.12");
xmlwrite.WriteEndElement();
xmlwrite.WriteEndElement();
xmlwrite.Close();
}

/// <summary>
/// 增加一个节点
/// </summary>
public void createXmlNode()

{
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data.xml"));
XmlNode root = xmldoc.SelectSingleNode("Employees");
XmlElement xe1 = xmldoc.CreateElement("node");
xe1.SetAttribute("geren","张三");
xe1.SetAttribute("ISBN", "1-1111-1");

XmlElement xeSub1 = xmldoc.CreateElement("title");
xeSub1.InnerText = "sql server2005高级开发指南";
xe1.AppendChild(xeSub1);

XmlElement xeSub2 = xmldoc.CreateElement("autoer");
xeSub1.InnerText = "李伟";
xe1.AppendChild(xeSub2);

XmlElement xeSub3 = xmldoc.CreateElement("price");
xeSub1.InnerText = "87.5";
xe1.AppendChild(xeSub3);
root.AppendChild(xe1);
xmldoc.Save(Server.MapPath("data.xml"));

}

/// <summary>
/// 编辑某个节点的值
/// </summary>
public void editXmlFile()

{
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data.xml"));
XmlNodeList nodeList = xmldoc.SelectSingleNode("Employees").ChildNodes;
foreach (XmlNode xn in nodeList)//遍历所有子节点

{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三”

{
xe.SetAttribute("genre", "update张三");//则修改该属性为“update张三”

XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历

{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "author")//如果找到

{
xe2.InnerText = "亚胜";//则修改
}
}
}
}


xmldoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 删除一个节点
/// </summary>
public void removeXmlNode()

{
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data.xml"));
XmlNode root = xmldoc.SelectSingleNode("Employees");
XmlNodeList nodeList = xmldoc.SelectSingleNode("Employees").ChildNodes;
for (int i = 0; i < nodeList.Count; i++)

{
XmlElement xe=(XmlElement)nodeList.Item(i);
if (xe.GetAttribute("genre") == "update张三")

{
root.RemoveChild(xe);
if (i < nodeList.Count) i = i - 1;

}
}
xmldoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 修改结点(添加结点的属性和添加结点的自结点)
/// </summary>
public void editAttribute()

{
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data.xml"));
XmlNodeList xnl = xmldoc.SelectSingleNode("Employees").ChildNodes;
foreach (XmlNode xn in xnl)

{
XmlElement xml = (XmlElement)xn;
xml.SetAttribute("test","23433");
XmlElement xmlSub = xmldoc.CreateElement("flag");
xmlSub.InnerText = "1";
xml.AppendChild(xmlSub);
xml.SetAttribute("price","53.4");

}
xmldoc.Save(Server.MapPath("data.xml"));
}

/// <summary>
/// 删除某一节点的属性
/// </summary>
public void removeXmlAttribute()

{
xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data.xml"));
XmlNodeList nodelist = xmldoc.SelectSingleNode("Employees").ChildNodes;
foreach(XmlNode xln in nodelist)

{
XmlElement xe1 = (XmlElement)xln;
xe1.RemoveAttribute("genre");
XmlNodeList nls = xe1.ChildNodes;
foreach (XmlNode xn1 in nls)

{
XmlElement xle1 = (XmlElement)xn1;
if (xle1.Name == "flag")

{
xe1.RemoveChild(xle1);
}
}
}
xmldoc.Save(Server.MapPath("data.xml"));
}