(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. IntelliJ IDEA 使用教程 - AS3篇

    喜欢IntelliJ IDEA的黑色皮肤,所以研究了下这个IDE的使用: 安装ActionScript Profiler插件: IDEA默认不带分析功能,需要下载安装该插件才行: File->S ...

  2. 关于STM32下载问题的简单理解

    首先STM32分为两种下载方式1.ISP(IN-SYSTEM-PROGRAMMING在线编程)  2.JTAG 这里简单谈谈对ISP下载的理解: ISP下载是51单片机,STM等单片机比较常见的一种下 ...

  3. C#-将控件动态添加到选项卡页tablepage

    tabPage1.Controls.Add(new Button()); 实例: Button cp = new Button(); cp.text="test";cp.Click ...

  4. BZOJ 1927: [Sdoi2010]星际竞速 费用流

    1927: [Sdoi2010]星际竞速 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  5. Android模拟器操作快捷键

    你可以通过模拟器的启动选项和控制台命令来控制模拟环境的行为和特性.一旦模拟器启动,你就可以通过键盘和鼠标来“按” 模拟器的按键,从而操作模拟器.下面的表格总结了模拟器按键可键盘按键之间的映射关系. 模 ...

  6. Android开发心得(转)

    前言: 很早以前,就听人说过android以后会火起来,作为一个前瞻性对它有所了解会是一个转型的好机会,javaweb太成熟饱和了,现在市面上各种android手机层出不穷,网上各种android视频 ...

  7. android学习日记18--Adapter简介

    一.Adapter 1.简述 最近学的GridView和Gallery 都有用到Adapter适配器,发现它貌似蛮重要的.专门上网搜了下有关Adapter的资料.android绝大多数应用是JAVA语 ...

  8. 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”

    //字符串替换空格:实现一个函数,把字符串里的空格替换成"%20" #include <stdio.h> #include <assert.h> void ...

  9. HDU 1068 Girls and Boys(最大独立集合 = 顶点数 - 最大匹配数)

    HDU 1068 :题目链接 题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识. 转换一下:就是大家都不认识的人,即最大独立集合 #include <iostream ...

  10. JS类型(1)_JS学习笔记(2016.10.02)

    js类型 js中的数据类型有undefined,boolean,number,string,null,object等6种,前5种为原始类型(基本类型),基本类型的访问是按值访问的,就是说你可以操作保存 ...