WPF 关于XDocument(xml) 的部分操作记录
Posted 积跬步---行千里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 = 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) 的部分操作记录的主要内容,如果未能解决你的问题,请参考以下文章
我已经在我的 SQL 数据库和 WPF 应用程序之间创建了一个连接,但我想使用 XML 文件和 XDocument 来连接它们