using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace MyXmlHelper
{
public class XmlHelper
{
static XmlDocument xmldoc;
static XmlNode xmlnode;
static XmlElement xmlelem;
/// <summary>
/// 创建一个带有根节点的Xml文件
/// </summary>
/// <paramname="FileName">Xml文件名称</param>
/// <paramname="rootName">根节点名称</param>
/// <paramname="Encode">编码方式:gb2312,UTF-8等常见的</param>
/// <paramname="DirPath">保存的目录路径</param>
///<returns></returns>
public static bool CreateXmlDocument(string FileName, string RootName, string Encode)
{
try
{
xmldoc = new XmlDocument();
XmlDeclaration xmldecl;
xmldecl = xmldoc.CreateXmlDeclaration("1.0", Encode, null);
xmldoc.AppendChild(xmldecl);
xmlelem = xmldoc.CreateElement("", RootName, "");
xmldoc.AppendChild(xmlelem);
xmldoc.Save(FileName);
return true;
}
catch (Exception e)
{
return false;
}
}
/// <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='Name']", "Attribute")
************************************************/
public static string Read(string path, string node, string attribute)
{
string value = "";
try
{
var doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (xn != null)
if (xn.Attributes != null)
value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
}
catch (Exception e)
{
return e.Message;
}
return value;
}
/// <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")
************************************************/
public static void Insert(string path, string node, string element, string attribute, string value)
{
var doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
var xe = (XmlElement)xn;
if (xe != null) xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
xe.InnerText = value;
else
xe.SetAttribute(attribute, value);
if (xn != null) xn.AppendChild(xe);
}
doc.Save(path);
}
/// <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
{
var doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
var xe = (XmlElement)xn;
if (attribute.Equals(""))
{
if (xe != null) xe.InnerText = value;
}
else if (xe != null) xe.SetAttribute(attribute, value);
doc.Save(path);
}
catch (Exception)
{
return;
}
}
/// <summary>
/// 删除数据
/// </summary>
/// <param name="path">路径</param>
/// <param name="node">节点</param>
/// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param>
/// <returns></returns>
/**************************************************
* 使用示列:
* XmlHelper.Delete(path, "/Node", "")
* XmlHelper.Delete(path, "/Node", "Attribute")
************************************************/
public static void Delete(string path, string node, string attribute)
{
try
{
var doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
var xe = (XmlElement)xn;
if (attribute.Equals(""))
{
if (xn != null) if (xn.ParentNode != null) xn.ParentNode.RemoveChild(xn);
}
else if (xe != null) xe.RemoveAttribute(attribute);
doc.Save(path);
}
catch
{
return;
}
}
}
}