using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml; namespace CommonUtil
{
/// <summary>
/// Xml通用操作类
/// </summary>
public class XmlHelper
{
public XmlHelper()
{
} /// <summary>
/// 创建XML文件
/// </summary>
/// <param name="path">路径</param>
/// <param name="filename">xml文件名称(包含后缀名)</param>
/// <param name="rootname">根节点名称</param>
/**************************************************
* 使用示列:
* XmlHelper.CreateXmlFile(path, "text.xml", "root")
************************************************/
public static void CreateXmlFile(string path, string filename, string rootname)
{
try
{
if (path.Equals(""))
throw new Exception("路径不能为空!"); if (filename.Equals(""))
throw new Exception("文件名称不能为空!"); if (!filename.Split('.').GetValue(filename.Split('.').Length - 1).ToString().ToLower().Equals("xml"))
throw new Exception("文件后缀名称必须为xml!"); if (rootname.Equals(""))
throw new Exception("根节点名称不能为空!"); if (!Directory.Exists(path)) //如果路径不存在,则创建路径
Directory.CreateDirectory(path); StringBuilder builder = new StringBuilder();
builder.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
if (!rootname.Equals(""))
{
builder.AppendLine("<" + rootname + ">");
builder.AppendLine("</" + rootname + ">");
} string fullpath = string.Empty;
XmlDocument doc = new XmlDocument();
doc.LoadXml(builder.ToString());
if (path.LastIndexOf('\\') == path.Length - 1)
fullpath = path + filename;
else
fullpath = path + "\\" + filename;
doc.Save(fullpath); //保存xml文件
}
catch
{
throw;
}
} /// <summary>
/// 读取数据
/// </summary>
/// <param name="path">全路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns>string</returns>
/**************************************************
* 使用示列:
* XmlHelper.Read(path, "/Node", "")
* XmlHelper.Read(path, "/Node/Element[@Attribute='Value']", "Attribute")
************************************************/
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
if (!File.Exists(path))
throw new Exception("xml文件不存在!"); if (node.Equals(""))
throw new Exception("节点名称不能为空!"); XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch
{
throw;
}
return value;
} /// <summary>
/// 读取数据
/// </summary>
/// <param name="path">全路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param>
/// <returns></returns>
public static List<string> ReadToList(string path, string node, string attribute)
{
List<string> nodelist = new List<string>(); try
{
if (!File.Exists(path))
throw new Exception("xml文件不存在!"); if (node.Equals(""))
throw new Exception("节点名称不能为空!"); XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodes = doc.SelectNodes(node);
if (nodes != null && nodes.Count > 0)
{
foreach (XmlNode n in nodes)
{
if (attribute.Equals(""))
nodelist.Add(n.InnerText);
else
nodelist.Add(n.Attributes[attribute].Value);
}
}
else
{
nodelist = null;
}
}
catch
{
throw;
} return nodelist;
} /// <summary>
/// 插入数据
/// </summary>
/// <param name="path">全路径</param>
/// <param name="node">节点</param>
/// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param>
/// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "Element", "", "Value")
* XmlHelper.Insert(path, "/Node", "Element", "Attribute", "Value")
* XmlHelper.Insert(path, "/Node", "", "Attribute", "Value")
* XmlHelper.Insert(path, "/Node/Element[@Attribute='Value']", "Element", "Attribute", "Value");
************************************************/
public static void Insert(string path, string node, string element, string attribute, string value)
{
try
{
if (!File.Exists(path))
throw new Exception("xml文件不存在!"); if (node.Equals(""))
throw new Exception("节点名称不能为空!"); if (element.Equals("") && attribute.Equals(""))
throw new Exception("元素名和属性名不能同时为空!"); XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
XmlElement xe = (XmlElement)xn;
xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
xn.AppendChild(xe);
}
doc.Save(path);
}
catch
{
throw;
}
} /// <summary>
/// 修改数据
/// </summary>
/// <param name="path">全路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Insert(path, "/Node", "", "Value")
* XmlHelper.Insert(path, "/Node", "Attribute", "Value")
************************************************/
public static void Update(string path, string node, string attribute, string value)
{
try
{
if (!File.Exists(path))
throw new Exception("xml文件不存在!"); if (node.Equals(""))
throw new Exception("节点名称不能为空!"); XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
doc.Save(path);
}
catch
{
throw;
}
} /// <summary>
/// 删除数据
/// </summary>
/// <param name="path">全路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <param name="value">值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Delete(path, "/Node", "")
* XmlHelper.Delete(path, "/Node", "Attribute")
************************************************/
public static void Delete(string path, string node, string attribute)
{
try
{
if (!File.Exists(path))
throw new Exception("xml文件不存在!"); if (node.Equals(""))
throw new Exception("节点名称不能为空!"); XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodes = doc.SelectNodes(node);
if (nodes != null && nodes.Count > 0)
{
foreach (XmlNode xn in nodes)
{
XmlElement xe = (XmlElement)xn;
if (attribute.Equals(""))
xn.ParentNode.RemoveChild(xn);
else
xe.RemoveAttribute(attribute);
}
doc.Save(path);
}
}
catch
{
throw;
}
}
}
}

  

Xml通用操作类的更多相关文章

  1. XML文件操作类--创建XML文件

    这个类是在微软XML操作类库上进行的封装,只是为了更加简单使用,包括XML类创建节点的示例. using System; using System.Collections; using System. ...

  2. PHP对XML文件操作类讲解

    <?phpclass XML{    private $dom;        function __construct ()    {        $this->dom = new D ...

  3. C# XML文件操作类XmlHelper

    类的完整代码: using System;using System.Collections;using System.Xml; namespace Keleyi.Com.XmlDAL{public c ...

  4. [No0000DE]C# XmlHelper XML类型操作 类封装

    using System; using System.Data; using System.IO; using System.Text; using System.Threading; using S ...

  5. 通用数据库操作类,前端easyui-datagrid,form

    实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...

  6. 简单的XML操作类

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  7. XML转换为对象操作类详解

    //XML转换为对象操作类 //一,XML与Object转换类 using System.IO; using System.Runtime.Serialization.Formatters.Binar ...

  8. C#常用操作类库三(XML操作类)

    /// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...

  9. XML Helper XML操作类

    写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...

随机推荐

  1. IDF实验室-简单编程-字符统计 writeup

    题目地址:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=37 网站:http://ctf.idf.cn/gam ...

  2. iOS开发笔记系列-基础3(多态、动态类型和动态绑定)

    多态:相同的名称,不同的类 使不同的类共享相同方法名称的能力成为多态.它让你可以开发一组类,这组类中的每一个类都能响应相同的方法名.每个类的定义都封装了响应特定方法所需要的代码,这使得它独立于其他的类 ...

  3. POJ 3104 Drying 二分

    http://poj.org/problem?id=3104 题目大意: 有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k.求所有弄干的最短时间. 思路: 注意烘干时候没有自然风干. ...

  4. VRRP协议具体解释

    转帖:http://blog.chinaunix.net/space.php?uid=11654074&do=blog&id=2857384 Contents              ...

  5. PHP 开发者该知道的5个 Composer 小技巧

    Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...

  6. innodb_strict_mode=1

    从MySQL5.5.X版本开始,你可以开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能.开启此功能后,当创建表(CREATE TABLE).更改表(ALTER TABLE)和 ...

  7. vs2010问题 error MSB8008: 指定的平台工具集(v110)未安装或无效

    vs2012上的项目导入到vs2010中,编译出现 >------ 已启动生成: 项目: HelloGame.win32, 配置: Debug Win32 ------ >生成启动时间为 ...

  8. 【转】cocos2d-x 2.0版本 自适应屏幕分辨率

    http://codingnow.cn/cocos2d-x/975.html 我使用的版本是cocos2d-2.0-x-2.0.4,cocos2dx-2.0版本对多分辨率适配提供了很好的支持,使用起来 ...

  9. OWASP 2013年十大Web应用安全漏洞

    权威的安全组织OWASP 更新了Top 10:https://www.owasp.org/index.php/Top_10_2013-Top_10 十大安全漏洞分别是:1. 注入,包括SQL.操作系统 ...

  10. CyclicBarrier 使用说明

    字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行.叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用.   主要方法:      public i ...