(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 = 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) 的部分操作记录的更多相关文章

  1. Odoo XML中操作记录与函数

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826037.html 一:XML文件中定义记录 XML中定义记录: 每个<record>元素有 ...

  2. Linq对XML的简单操作

    前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...

  3. nginx缓存配置的操作记录梳理

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...

  4. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  5. SQL Server对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  6. openstack虚拟机迁移的操作记录

    需求说明:计算节点linux-node1.openstack:192.168.1.8  计算节点linux-node2.openstack:192.168.1.17 这两个计算节点在同一个控制节点下( ...

  7. (转)SQL对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  8. SQL对Xml字段的操作

    转:http://www.cnblogs.com/youring2/archive/2008/11/27/1342288.html T-Sql操作Xml数据 一.前言 SQL Server 2005 ...

  9. Mycat读写分离、主从切换、分库分表的操作记录

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

随机推荐

  1. 编码问题(utf-8,gbk,utf-16be)

    utf-16be编码   中文汉字 英文字母 还有数字都是占用两个字节( java 是双字节编码 ) gbk编码 中文汉字占用2个字节:英文字母.数字占用一个字节 utf-8编码 中文汉字占用3个字节 ...

  2. ZZTHX-线程锁

    以前一直在做卡乐付,悲剧的是项目中的余额查询,超级转账和刷卡器相关的东西已经开发好了,我对这块还是比较好奇和感兴趣的,在项目空闲的时候我就开始尝试熟悉和了解这块的业务和代码.实践出真理,只有在实践中才 ...

  3. 【转】安装Ubuntu 15.10后要做的事

    Ubuntu 15.10发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化. 1.删除libreoffice libreoffice虽然是开源的,但是Java ...

  4. HDU 5500 Reorder the Books 贪心

    Reorder the Books Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...

  5. [Practical Git] Show who changed a line last with git blame

    When working on a file, we often want to know who made certain changes last; we can use git blame to ...

  6. [React Native] Reusable components with required propType

    In this React Native lesson, we will be creating a reusable Badge component. The component will also ...

  7. 应聘.net开发工程师常见的面试题(四)

    1.在Asp.net中所有的自定义用户控件都必须继承自________? 答:Control. 2.在.Net中所有可序列化的类都被标记为_____? 答:[serializable] 3.在.Net ...

  8. Redirect

    Redirect To use this Class, add the following to the top of the file. use Redirect; Redirect::to($pa ...

  9. 去掉Eclipse中的Validating

    去掉Eclipse中的Validating 最近我的Eclipse一直经常效验javascript,我疯了校验了一个多小时还是在验.我只能在项目的.project文件中: 去掉.project文件中的 ...

  10. linux 学习笔记 Linux内核的四大功能简介

    一 内存管理 默认情况下,运行在Linux系统上的每个进程都有各自的内存页面:进程不能访问其他进程正在使用的内存页面. 内核维护着自己的内存区域 用户进程不能访问内核进程的内存 可以创建一些共享内存页 ...