首页 > 代码库 > WPF 关于XDocument(xml) 的部分操作记录

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

(1)删除xml文件中的一个结点的方法,有如下两种方式(只有存在数据绑定的情况下才会有第二种情况,否则一般是第一种情况);

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();
        }

  加载数据的方法如下:

//关于数据绑定部分的添加绑定数据集合内容的方法
private void LoadData()
        {
            PacsNodeView.Clear();
            var TempData =http://www.mamicode.com/ GetAllNodes();
            foreach (var temp in TempData)
            {
                PacsNode pNode = new PacsNode();
                pNode.AETitle = temp.AETitle;
                pNode.HostIP = temp.HostIP;
                pNode.Port = temp.Port;
                pNode.HostName = temp.HostName;
                PacsNodeView.Add(pNode);
            }
        }

  从xml文件读取数据的方法如下:

//从xml中获取所有节点的信息
private List<PacsNode> GetAllNodes()
        {
            List<PacsNode> PacsNodes = new List<PacsNode>();
            string xmlFileName = @"..\..\Data\PacsConfig.xml";
            XDocument xDoc = XDocument.Load(xmlFileName);
            var Nodes = xDoc.Descendants("PacsNode");
            foreach (var n in Nodes)
            {
                PacsNode pNode = new PacsNode();
                var temp = n.Element("AETitle").Value;
                pNode.AETitle = n.Element("AETitle").Value;
                pNode.HostIP = n.Element("HostIP").Value;
                pNode.Port = n.Element("Port").Value;
                pNode.HostName = n.Element("HostName").Value;
                PacsNodes.Add(pNode);
            }
            return PacsNodes;
        }

 (2)可参考的学习链接:http://blog.csdn.net/figerdeng/article/details/19031975

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