XML操作类
摘至:http://blog.csdn.net/wpuuuu/archive/2007/03/19/1533204.aspx
using System;
using System.Xml;
namespace X2Blog
{
/// <summary>
/// xml 的摘要说明。
/// </summary>
public class XmlHandler
{
protected XmlDocument xdoc=new XmlDocument();
public XmlElement root;
public XmlHandler()
{
}
public void LoadXml(string xml)
{
xdoc.LoadXml(xml);
root=(XmlElement)xdoc.FirstChild;
}
//取得名称为name的结点的值
public string GetValue(string name)
{
XmlNode xn=FindXnByName(root.ChildNodes,name);
if(xn==null)return null;
return xn.InnerText;
}
//创建一个包含version和指定根节点的XmlDocument
public void CreateRoot(string rootName)
{
XmlElement xe=xdoc.CreateElement(rootName);
xdoc.AppendChild(xe);
root=xe;
}
//增加一个子结点
public XmlElement AppendChild(string name,string _value)
{
return AddChild((XmlElement)root,name,_value);
}
public override string ToString()
{
return xdoc.OuterXml;
}
//为一个XmlElement添加子节点,并返回添加的子节点引用
public XmlElement AddChild(XmlElement xe,string sField,string sValue)
{
XmlElement xeTemp=xdoc.CreateElement(sField);
xeTemp.InnerText=sValue;
xe.AppendChild(xeTemp);
return xeTemp;
}
//为一个XmlElement添加子节点,并返回添加的子节点引用
protected XmlElement AddChild(XmlElement xe,XmlDocument xd,string sField)
{
XmlElement xeTemp=xd.CreateElement(sField);
xe.AppendChild(xeTemp);
return xeTemp;
}
//为一个节点添加属性
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);
}
//为一个节点添加属性,不是系统表
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);
}
//通过节点名称找到指定的节点
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;
}
//找到指定名称属性的值
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;
}
//找到指定名称属性的值
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;
}
//为一个节点指定值
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;
}
//为一个属性指定值
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;
}
//寻找具有指定名称和属性/值组合的节点
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;
}
}
}
using System.Xml;
namespace X2Blog
{
/// <summary>
/// xml 的摘要说明。
/// </summary>
public class XmlHandler
{
protected XmlDocument xdoc=new XmlDocument();
public XmlElement root;
public XmlHandler()
{
}
public void LoadXml(string xml)
{
xdoc.LoadXml(xml);
root=(XmlElement)xdoc.FirstChild;
}
//取得名称为name的结点的值
public string GetValue(string name)
{
XmlNode xn=FindXnByName(root.ChildNodes,name);
if(xn==null)return null;
return xn.InnerText;
}
//创建一个包含version和指定根节点的XmlDocument
public void CreateRoot(string rootName)
{
XmlElement xe=xdoc.CreateElement(rootName);
xdoc.AppendChild(xe);
root=xe;
}
//增加一个子结点
public XmlElement AppendChild(string name,string _value)
{
return AddChild((XmlElement)root,name,_value);
}
public override string ToString()
{
return xdoc.OuterXml;
}
//为一个XmlElement添加子节点,并返回添加的子节点引用
public XmlElement AddChild(XmlElement xe,string sField,string sValue)
{
XmlElement xeTemp=xdoc.CreateElement(sField);
xeTemp.InnerText=sValue;
xe.AppendChild(xeTemp);
return xeTemp;
}
//为一个XmlElement添加子节点,并返回添加的子节点引用
protected XmlElement AddChild(XmlElement xe,XmlDocument xd,string sField)
{
XmlElement xeTemp=xd.CreateElement(sField);
xe.AppendChild(xeTemp);
return xeTemp;
}
//为一个节点添加属性
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);
}
//为一个节点添加属性,不是系统表
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);
}
//通过节点名称找到指定的节点
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;
}
//找到指定名称属性的值
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;
}
//找到指定名称属性的值
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;
}
//为一个节点指定值
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;
}
//为一个属性指定值
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;
}
//寻找具有指定名称和属性/值组合的节点
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;
}
}
}