C# 操作XML
2015-07-31 10:55 Evan.Pei 阅读(129) 评论(0) 编辑 收藏 举报XML存储数据的一种文本格式,以节点的方式存储,类似html,只是节点名称可以自己定义。
1.创建XML
public void fun_createXML() { XmlNode xmlnode; XmlElement xmlelem; XmlDocument xmldoc = new XmlDocument(); //创建根节点 XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); xmldoc.AppendChild(xmldecl); //创建员工节点容器 xmlelem = xmldoc.CreateElement("", "Employees", ""); xmldoc.AppendChild(xmlelem); //放三个员工到容器里面 for (int i = 0; i < 3; i++) { //xmldoc.SelectSingleNode()查找某个节点 xmlnode = xmldoc.SelectSingleNode("Employees"); //创建节点 XmlElement xe = xmldoc.CreateElement("node"); xe.SetAttribute("name", "evan");//设置属性 xe.SetAttribute("age", "27"); //创建节点 XmlElement kemu1 = xmldoc.CreateElement("title"); kemu1.SetAttribute("id", "title");//设置属性 kemu1.InnerText = "javascript";//设置文本 xe.AppendChild(kemu1);//填充到xe节点中 XmlElement score = xmldoc.CreateElement("score"); score.InnerText = "86.5"; xe.AppendChild(score); xmlnode.AppendChild(xe); } //在项目根目录创建XML文件 xmldoc.Save(Server.MapPath("data3.xml")); }
2.读取XML
public void fun_GetXML() { //System.IO.StreamReader myfile = // new System.IO.StreamReader(Server.MapPath("data3.xml"),System.Text.Encoding.Default); //string mystring = myfile.ReadToEnd();//以文本的方式获取全部文本 //myfile.Close(); XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath("data3.xml")); //获取所有子节点 XmlNodeList xnlist = xd.SelectSingleNode("Employees").ChildNodes; for (int i = 0; i < xnlist.Count; i++) { XmlElement xe = (XmlElement)xnlist[i]; Response.Write("名字是:"+xe.GetAttribute("name")+"</br>");//获取属性名称 //获取子节点 XmlNodeList xn2=xe.ChildNodes; for (int y = 0; y < xn2.Count; y++) { XmlElement xe2 = (XmlElement)xn2[y]; if (xe2.Name == "title")//节点名称 { Response.Write("科目是:" + xe2.InnerText + "</br>"); } else { Response.Write("分数数:" + xe2.InnerText + "</br>"); } } } }
3.修改XML
public void fun_updateXMLText() { XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath("data3.xml")); //获取所有子节点 XmlNodeList nodelist = xd.SelectSingleNode("Employees").ChildNodes; //循环子节点 foreach (XmlNode x in nodelist) { //转换 XmlElement xe = (XmlElement)x; if (xe.Name == "NEWnode") {//判断节点名称 xe.InnerText = "bbbbbbbbbb";//修改里面的文本 } } xd.Save(Server.MapPath("data3.xml"));//重新保存 }
4.添加XML
public void fun_addNodeXML() { XmlDocument xd = new XmlDocument(); xd.Load(Server.MapPath("data3.xml")); XmlNode xn = xd.SelectSingleNode("Employees"); XmlElement xe = xd.CreateElement("NEWnode"); xe.InnerText = "NEWnodeTEXT"; xn.AppendChild(xe); xd.Save(Server.MapPath("data3.xml")); }
5.删除XML节点
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load( Server.MapPath("data.xml") ); XmlNodeList xnl=xmlDoc.SelectSingleNode("Employees").ChildNodes; foreach(XmlNode xn in xnl) { XmlElement xe=(XmlElement)xn; xe.RemoveAttribute("genre");//删除genre属性 XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 foreach(XmlNode xn1 in nls)//遍历 { XmlElement xe2=(XmlElement)xn1;//转换类型 if(xe2.Name=="flag")//如果找到 { xe.RemoveChild(xe2);//则删除 } } } xmlDoc.Save( Server.MapPath("data.xml") );