(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. Android进阶之大话设计模式

    一般来说,常用的设计模式有以下八种:单例.工厂.观察者.代理.命令.适配器.合成.访问者 单例模式:目的是为了让系统中只有一个调用对象,缺点是单例使其他程序过分依赖它,而且不同单例运行在不同进程中,使 ...

  2. 增强的for循环(或foreach)

    增强的for循环(也称为foreach循环):不用下标变量,顺序的訪问整个数组.不能以其它顺序訪问数组,或者改变数组的元素. for(elementType element: arrayRefVar) ...

  3. [原创]VS2013 EF6连接MySql需要几步?

    精简的美丽...... 1.安装mysql server下载地址 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip注意: ...

  4. [021]转 C++ Pimpl机制

    出处:http://www.cnblogs.com/gnuhpc/ 1.简介 这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们 ...

  5. C#_MVC 自定义AuthorizeAttribute实现权限管理

    随笔- 28  文章- 31  评论- 16 MVC 自定义AuthorizeAttribute实现权限管理   在上一节中提到可以使用AuthorizeAttribute进行权限管理: [Autho ...

  6. Jquery的$命名冲突

    在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg')的写法.然而,当我们引入多个js库后,在另外一个js库中 ...

  7. 【转】java静态代码块和构造方法执行顺序

    先看看下面几个类,然后判断它们的输出public class A { static{System.out.print(1);}public A(){System.out.print(2);}} pub ...

  8. javascript笔记04:let语句 和 yield语句 和 with语句

    1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...

  9. 一段JavaScript代码

    eval(function(p, a, c, k, e, d) { e = function(c) { return c.toString(36) }; if (!''.replace(/^/, St ...

  10. Lucene全文检索系列(一)

    1. Lucene简介 Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.Lucene以其方便使用.快速实施以及灵活性受到广泛的关注.它可以方便地嵌入到各种应用中实现针对应用的全文 ...