一、常规介绍
//初始化一个xml对象 XmlDocument xml = new XmlDocument(); //加载xml文件 xml.Load("文件路径"); //读取指定的节点 XmlNode xmlNode = xml.SelectSingleNode("/节点名"); //判断节点下是否有子节点 xmlNode.HasChildNodes; //读取节点下的所有子节点 XmlNodeList xmlNodeList = xmlNode.ChildNodes; //读取同名同级多个节点列表 XmlNodeList xmlNodeList = xml.SelectNodes("/root/节点名"); //读取节点的属性 string attribute = xmlNode.Attributes["属性名"].Value; //读取节点的文本 string value = xmlNode.InnerText; //创建一个新的节点 XmlNode xmlNode = xml.CreateElement("节点名"); //保存xml文件 xml.Save("文件路径");
二、添加一个节点
XmlDocument xmlDoc=new XmlDocument(); xmlDoc.Load(Server.MapPath("data.xml")); XmlNode root=xmlDoc.SelectSingleNode("Employees");//查找<Employees> XmlElement xe1=xmlDoc.CreateElement("Node");//创建一个<Node>节点 xe1.SetAttribute("genre","张三");//设置该节点genre属性 xe1.SetAttribute("ISBN","1-1111-1");//设置该节点ISBN属性 XmlElement xesub1=xmlDoc.CreateElement("title"); xesub1.InnerText="C#入门帮助";//设置文本节点 xe1.AppendChild(xesub1);//添加到<Node>节点中 XmlElement xesub2=xmlDoc.CreateElement("author"); xesub2.InnerText="高手"; xe1.AppendChild(xesub2); XmlElement xesub3=xmlDoc.CreateElement("price"); xesub3.InnerText="158.3"; xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<Employees>节点中 xmlDoc.Save ( Server.MapPath("data.xml") );
三、编辑节点
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("data.xml")); XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获Employees 节 点 的 所有子节点 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"));//保存。
四、删除节点中的某一个属性
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"));
六、删除节点
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("data.xml")); XmlNode root = xmlDoc.SelectSingleNode("Employees"); XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes; for (int i = 0; i < xnl.Count; i++) { XmlElement xe = (XmlElement)xnl.Item(i); if (xe.GetAttribute("genre") == "张三") { root.RemoveChild(xe); if (i < xnl.Count) i = i - 1; } } xmlDoc.Save(Server.MapPath("data.xml"));
七、按照文本读取XML
System.IO.StreamReader myFile =new System.IO.StreamReader(Server.MapPath("data.xml"),System.Text.Encoding.Default); //注意System.Text.Encoding.Default string myString = myFile.ReadToEnd();//myString是读出的字符串 myFile.Close();