类文件:

 class OperatorXML
{
/// <summary>
/// 确定资源文件路径,Resource为自己创建的目录
/// </summary>
private string filePath = @"..\..\Resources\XMLFile.xml";
/// <summary>
///
/// </summary>
private XDocument xDoc ; /// <summary>
/// 当窗体加载时, 遍历所有节点
/// </summary>
public List<Desktop> LoadNode()
{
List<Desktop> desktop = new List<Desktop>();
try
{
this.xDoc = XDocument.Load(filePath);//加载xml文件
XElement root = xDoc.Root; //获取根节点 //遍历所有节点
foreach (XElement elem in xDoc.Root.Elements("Desktop"))
{
desktop.Add(new Desktop(elem.Attribute("IpAddr").Value,elem.Attribute("Alias").Value, elem.Attribute("Pwd").Value,elem.Attribute("UserName").Value, elem.Attribute("Description").Value, new Guid(elem.Attribute("Id").Value)));
} }
catch(Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
return desktop;
} /// <summary>
/// 遍历所有节点, 获取节点的别名
/// </summary>
/// <returns></returns>
public List<string> GetNodeName()
{
List<string> nodeName = new List<string>();
try
{
this.xDoc = XDocument.Load(filePath);//加载xml文件
XElement root = xDoc.Root; //获取根节点 //遍历所有节点
foreach (XElement elem in xDoc.Root.Elements("Desktop"))
{
nodeName.Add(elem.Attribute("Alias").Value);
} }
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
return nodeName;
} /// <summary>
/// 根据指定的id获取对应的节点属性
/// </summary>
/// <param name="id">指定的id</param>
/// <returns></returns>
public Desktop GetDesktop(string id)
{
this.xDoc = XDocument.Load(filePath);//加载xml文件
XElement root = xDoc.Root; //获取根节点
Desktop desktop = null;
//遍历所有节点
foreach (XElement elem in xDoc.Root.Elements("Desktop"))
{
if (elem.Attribute("Id").Value == id)
{
desktop = new Desktop();
desktop.IpAddr = elem.Attribute("IpAddr").Value;
desktop.Alias = elem.Attribute("Alias").Value;
desktop.UserName = elem.Attribute("UserName").Value;
desktop.Pwd = elem.Attribute("Pwd").Value;
desktop.Description = elem.Attribute("Description").Value;
desktop.Id = new Guid(elem.Attribute("Id").Value);
}
}
return desktop;
} /// <summary>
/// 添加一个节点
/// </summary>
public void AddSave(Desktop desktop)
{
try
{
this.xDoc = XDocument.Load(this.filePath); this.xDoc.Root.Add(new XElement("Desktop",
new XAttribute("IpAddr",desktop.IpAddr),
new XAttribute("UserName", desktop.UserName),
new XAttribute("Description", desktop.Description),
new XAttribute("Pwd",desktop.Pwd),
new XAttribute("Alias", desktop.Alias),
new XAttribute("Id", desktop.Id)
));
this.xDoc.Save(this.filePath);
}
catch(Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
} /// <summary>
/// 根据ID来修改某个节点
/// </summary>
/// <param name="id"></param>
public void modifyNode(Desktop desktop)
{
this.xDoc = XDocument.Load(this.filePath);
foreach (XElement elem in xDoc.Root.Elements("Desktop"))
{
if (elem.Attribute("Id").Value == desktop.Id.ToString())
{
elem.SetAttributeValue("IpAddr", desktop.IpAddr);
elem.SetAttributeValue("Alias", desktop.Alias);
elem.SetAttributeValue("UserName", desktop.UserName);
elem.SetAttributeValue("Pwd", desktop.Pwd);
elem.SetAttributeValue("Description", desktop.Description);
}
}
this.xDoc.Save(this.filePath);
} /// <summary>
/// 删除一个节点并保存
/// </summary>
/// <param name="desktop"></param>
public bool RemoveSave(string id)
{
bool isOK = false;
this.xDoc = XDocument.Load(this.filePath);
foreach (XElement elem in xDoc.Root.Elements("Desktop"))
{
if (elem.Attribute("Id").Value == id)
{
elem.Remove();
this.xDoc.Save(this.filePath);
isOK = true;
break;
}
}
return isOK;
}
}

xml文件示例(XMLFile.xml):

<?xml version="1.0" encoding="utf-8"?>
<Root>
<Desktop IpAddr="host1" UserName="administrator" Description="独立服务器" Pwd="pwd" Alias="礼仪" Id="dfbc7b37-b5b3-4c36-a9c4-64302d824c34" />
<Desktop IpAddr="host2" UserName="administrator" Description="咖啡独立服务器" Pwd="pwsd" Alias="季卡" Id="80da53e6-5d84-4dc3-bb3f-90fbf0174e06" />
</Root>

C#简单操作XML的更多相关文章

  1. Linq对XML的简单操作

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

  2. XML系列之--对电文格式XML的简单操作(三)

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

  3. SqlServer简单的操作XML以及SQl的 try catch等统一格式

    1:SqlServer简单的操作XML: ALTER PROCEDURE [dbo].[SP_CRM_FranchiseeRecharge_Money] @Create_By VARCHAR(), @ ...

  4. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  5. php操作xml

    最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉, ...

  6. C#操作XML方法集合

    一 前言 先来了解下操作XML所涉及到的几个类及之间的关系  如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...

  7. Delphi操作XML简介

    参考:http://www.delphifans.com/InfoView/Article_850.html Delphi 7支持对XML文档的操作,可以通过 TXMLDocument类来实现对XML ...

  8. 第12章 在.NET中操作XML

    12.1 XML概述 12.1.1 为什么要有XML 12.1.2 XML文档结构 (1)文档声明 <?xml version="1.0"encoding="UTF ...

  9. XMl入门介绍及php操作XML

    一.什么是XML XML全称:Extensible Markup Language 中文名:可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标 ...

随机推荐

  1. 新东方雅思词汇---8.3、apt

    新东方雅思词汇---8.3.apt 一.总结 一句话总结:本身为词根 adj. 恰当的:有…倾向的:灵敏的 本身为词根 英 [æpt]  美 [æpt]  adj. 恰当的:有…倾向的:灵敏的 n. ...

  2. Mac系统下安装ipython分别支持python2和python3

    操作系统:Mac10.11.5 python2.7.13 python3.6.1 安装python2: brew install python 安装python3: brew install pyth ...

  3. HTTP和HTTPS的区别和联系

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...

  4. CPU Usage (C#) 测试

    注意:算法仅供参考. cpuusage.cs using System; using System.Collections.Generic; using System.Diagnostics; usi ...

  5. jquery attr与prop的区别与联系

    最近开发中发现用attr无法设置checkbox的选中事件,在网上找了下说要用prop,所以总结下两者的区别. 1.操作的对象不同 attr:操作的是HTML文档节点属性 prop:操作的是js对象属 ...

  6. 四 web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需要导入模块:from scrapy.selector import HtmlXPa ...

  7. IOS-RunTime(刨根问底)

    方法调用 让我们看一下方法调用在运行时的过程(参照前文类在runtime中的表示) 如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作.如果调用的是类方法,就会到类对象的i ...

  8. 转: 更高的压缩比,更好的性能–使用ORC文件格式优化Hive

    Hive从0.11版本开始提供了ORC的文件格式,ORC文件不仅仅是一种列式文件存储格式,最重要的是有着很高的压缩比,并且对于MapReduce来说是可切分(Split)的.因此,在Hive中使用OR ...

  9. Makefile的补充学习2

    Makefile中使用通配符(1)* 若干个任意字符(2)? 1个任意字符(3)[] 将[]中的字符依次去和外面的结合匹配 还有个%,也是通配符,表示任意多个字符,和*很相似,但是%一般只用于规则描述 ...

  10. dataGridView的使用经验

    1.dataGridView是dataGrid的替代品,包含了dataGrid的全部功能. 2.为dataGridView赋值,一般将其数据设置为一个DataTabel.例子如下: DataTable ...