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;
        }

    }

}
posted on 2007-09-10 15:49  迷你软件  阅读(216)  评论(0编辑  收藏  举报

本网站绝大部分资源来源于Internet,本站所有作品版权归原创作者所有!!如有以下内容:章节错误、非法内容、作者署名出错、版权疑问、作品内容有违相关法律等请及时与我联系. 我将在第一时间做出响应!本站所有文章观点不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。