C#.Net对XML文件的操作类

在处理XML文件的时候会经常用到,包含了C#对XML文件的常用操作



[code=”langlanguage””]
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace CrazyCoder.Common.XML
{
///

/// C#XML文件操作类 包含常用XML操作信息
/// by CrazyCoder.Cn
/// 转载请注明出处
///

public class XmlHandler
{
protected XmlDocument xdoc = new XmlDocument();
public XmlElement root;
public XmlHandler()
{

}

#region LoadXml
///

/// 加载Xml文档
///

/// public void LoadXml(string xml)
{
xdoc.LoadXml(xml);
root = (XmlElement)xdoc.FirstChild;
}
#endregion

#region 取得名称为name的结点的值
///

/// 取得名称为name的结点的值
///

/// ///
public string GetValue(string name)
{
XmlNode xn = FindXnByName(root.ChildNodes, name);
if (xn == null) return null;
return xn.InnerText;
}
#endregion

#region 创建一个包含version和指定根节点的XmlDocument
///

/// 创建一个包含version和指定根节点的XmlDocument
///

/// public void CreateRoot(string rootName)
{
XmlElement xe = xdoc.CreateElement(rootName);
xdoc.AppendChild(xe);
root = xe;
}
#endregion

#region 增加一个子结点
///

/// 增加一个子结点
///

/// 名 /// 值 ///
public XmlElement AppendChild(string name, string _value)
{
return AddChild((XmlElement)root, name, _value);
}
#endregion

#region ToString
public override string ToString()
{
return xdoc.OuterXml;
}
#endregion

#region 为一个XmlElement添加子节点,并返回添加的子节点引用
///

/// 为一个XmlElement添加子节点,并返回添加的子节点引用
///

/// /// /// ///
public XmlElement AddChild(XmlElement xe, string sField, string sValue)
{
XmlElement xeTemp = xdoc.CreateElement(sField);
xeTemp.InnerText = sValue;
xe.AppendChild(xeTemp);
return xeTemp;
}
#endregion

#region 为一个XmlElement添加子节点,并返回添加的子节点引用
///

/// 为一个XmlElement添加子节点,并返回添加的子节点引用
///

/// /// /// ///
protected XmlElement AddChild(XmlElement xe, XmlDocument xd, string sField)
{
XmlElement xeTemp = xd.CreateElement(sField);
xe.AppendChild(xeTemp);
return xeTemp;
}
#endregion

#region 为一个节点添加属性
///

/// 为一个节点添加属性
///

/// /// /// public void AddAttribute(XmlElement xe, string strName, string strValue)
{
//判断属性是否存在
string s = GetXaValue(xe.Attributes, strName);
//属性已经存在
if (s != null)
{
throw new System.Exception(“attribute exists”);
}
XmlAttribute xa = xdoc.CreateAttribute(strName);
xa.Value = strValue;
xe.Attributes.Append(xa);
}
#endregion

#region 为一个节点添加属性,不是系统表
///

/// 为一个节点添加属性,不是系统表
///

/// /// /// /// protected void AddAttribute(XmlDocument xdoc, XmlElement xe, string strName, string strValue)
{
//判断属性是否存在
string s = GetXaValue(xe.Attributes, strName);
//属性已经存在
if (s != null)
{
throw new Exception(“Error:The attribute ‘” + strName + “‘ has been existed!”);
}
XmlAttribute xa = xdoc.CreateAttribute(strName);
xa.Value = strValue;
xe.Attributes.Append(xa);
}
#endregion

#region 通过节点名称找到指定的节点
///

/// 通过节点名称找到指定的节点
///

/// /// ///
protected XmlNode FindXnByName(XmlNodeList xnl, string strName)
{
for (int i = 0; i < xnl.Count; i++) { if (xnl.Item(i).LocalName == strName) return xnl.Item(i); } return null; } #endregion #region 找到指定名称属性的值 ///

/// 找到指定名称属性的值
///

/// /// ///
protected string GetXaValue(XmlAttributeCollection xac, string strName)
{
for (int i = 0; i < xac.Count; i++) { if (xac.Item(i).LocalName == strName) return xac.Item(i).Value; } return null; } #endregion #region 找到指定名称属性的值 ///

/// 找到指定名称属性的值
///

/// /// ///
protected string GetXnValue(XmlNodeList xnl, string strName)
{
for (int i = 0; i < xnl.Count; i++) { if (xnl.Item(i).LocalName == strName) return xnl.Item(i).InnerText; } return null; } #endregion #region 为一个节点指定值 ///

/// 为一个节点指定值
///

/// /// /// protected void SetXnValue(XmlNodeList xnl, string strName, string strValue)
{
for (int i = 0; i < xnl.Count; i++) { if (xnl.Item(i).LocalName == strName) { xnl.Item(i).InnerText = strValue; return; } } return; } #endregion #region 为一个属性指定值 ///

/// 为一个属性指定值
///

/// /// /// protected void SetXaValue(XmlAttributeCollection xac, string strName, string strValue)
{
for (int i = 0; i < xac.Count; i++) { if (xac.Item(i).LocalName == strName) { xac.Item(i).Value = strValue; return; } } return; } #endregion #region 寻找具有指定名称和属性/值组合的节点 ///

/// 寻找具有指定名称和属性/值组合的节点
///

/// /// /// ///
protected XmlNode FindXnByXa(XmlNodeList xnl, string strXaName, string strXaValue)
{
string xa;
for (int i = 0; i < xnl.Count; i++) { xa = GetXaValue(xnl.Item(i).Attributes, strXaName); if (xa != null) { if (xa == strXaValue) return xnl.Item(i); } } return null; } #endregion } } [/code]