XML操作类

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

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值