C#对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]

posted @ 2010-07-02 11:34  gllg  阅读(307)  评论(0编辑  收藏  举报