博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Xml通用操作类
阅读量:6292 次
发布时间:2019-06-22

本文共 6334 字,大约阅读时间需要 21 分钟。

using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Xml;namespace CommonUtil{	/// 	/// Xml通用操作类	/// 	public class XmlHelper	{		public XmlHelper()		{		}		/// 		/// 创建XML文件		/// 		/// 路径		/// xml文件名称(包含后缀名)		/// 根节点名称		/**************************************************		 * 使用示列:		 * 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("
"); if (!rootname.Equals("")) { builder.AppendLine("<" + rootname + ">"); builder.AppendLine("
"); } 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; } } /// /// 读取数据 /// /// 全路径 /// 节点 /// 属性名,非空时返回该属性值,否则返回串联值 ///
string
/************************************************** * 使用示列: * 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; } /// /// 读取数据 /// /// 全路径 /// 节点 /// 属性名,非空时返回该属性值,否则返回串联值 ///
public static List
ReadToList(string path, string node, string attribute) { List
nodelist = new List
(); 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; } ///
/// 插入数据 /// ///
全路径 ///
节点 ///
元素名,非空时插入新元素,否则在该元素中插入属性 ///
属性名,非空时插入该元素属性值,否则插入元素值 ///
值 ///
/************************************************** * 使用示列: * 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; } } ///
/// 修改数据 /// ///
全路径 ///
节点 ///
属性名,非空时修改该节点属性值,否则修改节点值 ///
值 ///
/************************************************** * 使用示列: * 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; } } ///
/// 删除数据 /// ///
全路径 ///
节点 ///
属性名,非空时删除该节点属性值,否则删除节点值 ///
值 ///
/************************************************** * 使用示列: * 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; } } }}

  

转载于:https://www.cnblogs.com/yuanfang2015/p/4882365.html

你可能感兴趣的文章
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>