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


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

    private void DeletePacsNode()
            {
                //从xml文件中删除根节点的子节点的方式(两种)
                //(1)直接获得所有的子节点,然后根据条件判断从里面移除
                //XmlDocument xmlDoc = new XmlDocument();
                //xmlDoc.Load(@"....DataPacsConfig.xml");
                //var root = xmlDoc.DocumentElement;                  //获取文档的根            
                //xmlDoc.Load(@"....DataPacsConfig.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(@"....DataPacsConfig.xml");
                //(2)清空xml文件,并从绑定的数据集合中移除相应的元素,再将剩下的元素重新存入xml文件
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(@"....DataPacsConfig.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(@"....DataPacsConfig.xml");
                this.LoadData();
            }

      加载数据的方法如下:

    //关于数据绑定部分的添加绑定数据集合内容的方法
    private void LoadData()
            {
                PacsNodeView.Clear();
                var TempData = 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 = @"....DataPacsConfig.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

  • 相关阅读:
    封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。
    优化特性(Attribute)性能
    不需要了解任何底层知识,就可以汉化!Let`s go!!!
    颠覆你对方法调用的看法!
    实际项目中面向对象的最佳实践
    递归使用触发器
    关于稀疏数组
    121-django中的Http404处理
    120-在前端使用django-ckeditor,很简单,很方便
    119-用django实现评论功能
  • 原文地址:https://www.cnblogs.com/runningRain/p/5991533.html
Copyright © 2020-2023  润新知