public class XMLValueExist_Exception : Exception { public override string Message { get { return "The Value is aready exist!"; } } } public class XMLHelper { /// <summary> /// 返回节点值 /// </summary> /// <param name="path"></param> /// <param name="id"></param> /// <returns></returns> public static List<string> getNodesInnerText(string path, string id) { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode nodes = doc.SelectSingleNode("/cars/car[@ID='" + id + "']");//---/cars/car[@ID='0002'] List<string> values = new List<string>(); foreach (XmlNode childnode in nodes.ChildNodes) { values.Add(childnode.InnerText); } return values; } /// <summary> /// 删除节点 /// </summary> /// <param name="path"></param> /// <param name="xmlpath">/cars/car[@ID='0001']</param> /// <param name="ID"></param> public static void DeleteNodes(string path, string id) { XmlDocument doc = new XmlDocument(); doc.Load(path); XmlNode nodes = doc.SelectSingleNode("/cars/car[@ID='" + id + "']"); nodes.ParentNode.RemoveChild(nodes); doc.Save(path); } public static void DeleteChildNodes(string path, string id, string value) { XmlDocument doc = new XmlDocument(); doc.Load(path); // XmlNode nodes = doc.SelectSingleNode("/cars/car[Values=" + value + " and @ID='" + id + "']/Values"); XmlNode nodes = doc.SelectSingleNode("/cars/car[ @ID='" + id + "']/Values[text()='" + value + "']"); if (nodes != null) { Console.WriteLine(nodes.OuterXml); if (nodes.ParentNode.ChildNodes.Count == 1)//如果为一个结点则删除父节点 { nodes.ParentNode.ParentNode.RemoveChild(nodes.ParentNode); } nodes.ParentNode.RemoveChild(nodes); } doc.Save(path); } /// <summary> /// 添加节点值 /// </summary> /// <param name="path"></param> /// <param name="xmlpath"></param> public static void AddNodes(string path, string id, string value) { //string aa=System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); XmlDocument doc = new XmlDocument(); XmlNode rootnodes = null; XmlNode carsNodes = null; XmlNode carNodes = null; if (!File.Exists(path)) { rootnodes = doc.CreateXmlDeclaration("1.0", "UTF-8", null); doc.AppendChild(rootnodes); carsNodes = doc.CreateElement("cars"); doc.AppendChild(carsNodes); } else { doc.Load(path); carsNodes = doc.SelectSingleNode("/cars"); } carNodes = doc.SelectSingleNode("/cars/car[@ID='" + id + "']"); if (carNodes == null) //创建car节点 { carNodes = doc.CreateElement("car"); XmlAttribute atr = doc.CreateAttribute("ID"); atr.Value = id; carNodes.Attributes.Append(atr); carsNodes.AppendChild(carNodes); } XmlNode samenodes = doc.SelectSingleNode("/cars/car[ @ID='" + id + "']/Values[text()='" + value + "']"); if (samenodes != null) { throw new XMLValueExist_Exception(); } //foreach (XmlNode childnode in carNodes.ChildNodes) //{ // //值不能相同 // if (childnode.InnerText == value) // { // throw new Exception("已存在相同值"); // } //} XmlNode nodes = doc.CreateElement("Values"); nodes.InnerText = value; carNodes.AppendChild(nodes); doc.Save(path); } }