WPF 关于XDocument(xml) 的部分操作记录

时间:2021-07-07 02:10:27

private void DeletePacsNode() { //从xml文件中删除根节点的子节点的方式(两种) //(1)直接获得所有的子节点,然后根据条件判断从里面移除 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.Load(@"..\..\Data\PacsConfig.xml"); //var root = xmlDoc.DocumentElement; //获取文档的根 //xmlDoc.Load(@"..\..\Data\PacsConfig.xml"); //var nodes = xmlDoc.DocumentElement.ChildNodes; //foreach (var item in nodes) //{ // XmlNode temp = (XmlNode)item; // if (temp["AETitle"].InnerText == SelectedPacsNode.AETitle)    //当该条件不唯一时,则需要把对应的能唯一确定该节点的判断条件均加上 // root.RemoveChild(temp); //} //xmlDoc.Save(@"..\..\Data\PacsConfig.xml"); //(2)清空xml文件,并从绑定的数据集合中移除相应的元素,,再将剩下的元素重新存入xml文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@"..\..\Data\PacsConfig.xml"); PacsNodeView.Remove(SelectedPacsNode); //从绑定的数据集合中移除选择的元素 //var element = xmlDoc.SelectSingleNode(SelectedPacsNode.AETitle); XmlNode root = xmlDoc.SelectSingleNode("PACS"); //查找<PACS> root.RemoveAll(); //清空xml,删除所有节点 foreach (var item in PacsNodeView) { XmlElement xe1 = xmlDoc.CreateElement("PacsNode"); //创建一个<PacsNode>节点 XmlElement xesub1 = xmlDoc.CreateElement("AETitle"); xesub1.InnerText = item.AETitle; //设置文本节点 xe1.AppendChild(xesub1); //添加到<book>节点中 XmlElement xesub2 = xmlDoc.CreateElement("HostIP"); xesub2.InnerText = item.HostIP; xe1.AppendChild(xesub2); XmlElement xesub3 = xmlDoc.CreateElement("Port"); xesub3.InnerText = item.Port; xe1.AppendChild(xesub3); XmlElement xesub4 = xmlDoc.CreateElement("HostName"); xesub4.InnerText = item.HostName; xe1.AppendChild(xesub4); //root.RemoveChild(xe1); root.AppendChild(xe1); } xmlDoc.Save(@"..\..\Data\PacsConfig.xml"); this.LoadData(); }