www.pudn.com > Crawler_bemjh.rar > AttributeList.cs


using System; 
using System.Collections; 
 
namespace CrawlerLib 
{ 
	///  
	/// The AttributeList class is used to store list of 
	/// Attribute classes. 
	///  
	/// This spider is copyright 2003 by Jeff Heaton. However, it is 
	/// released under a Limited GNU Public License (LGPL). You may  
	/// use it freely in your own programs. For the latest version visit 
	/// http://www.jeffheaton.com. 
	/// 
	///  
	/// 
	public class AttributeList:Attribute 
	{

		///  
		/// An internally used Vector.  This vector contains 
		/// the entire list of attributes. 
		/// 
		private ArrayList m_list;

		///  
		/// Make an exact copy of this object using the cloneable interface. 
		///  
		/// A new object that is a clone of the specified object.
		public override Object Clone()
		{
			AttributeList rtn = new AttributeList();			

			for ( int i=0;i 
		/// Create a new, empty, attribute list. 
		/// 
		protected AttributeList():base("","")
		{
			m_list = new ArrayList();
		}


		///  
		/// Add the specified attribute to the list of attributes. 
		///  
		/// An attribute to add to this AttributeList.
		public void Add(Attribute a)
		{
			m_list.Add(a);
		}


		///  
		/// Clear all attributes from this AttributeList and return it 
		/// to a empty state. 
		/// 
		protected void Clear()
		{
			m_list.Clear();
		}

		///  
		/// Returns true of this AttributeList is empty, with no attributes. 
		///  
		/// True if this AttributeList is empty, false otherwise.
		protected bool IsEmpty()
		{
			return( m_list.Count<=0);
		}

		///  
		/// If there is already an attribute with the specified name, 
		/// then it will have its value changed to match the specified value. 
		/// If there is no Attribute with the specified name, then one will 
		/// be created.  This method is case-insensitive. 
		///  
		/// The name of the Attribute to edit or create.  Case-insensitive. 
		/// The value to be held in this attribute.
		protected void Set(string name,string value)
		{
			if ( name==null )
				return;
			if ( value==null )
				value="";

			Attribute a = this[name];

			if ( a==null )  
			{
				a = new Attribute(name,value);
				Add(a);
			}  
			else
				a.Value = value;
		}

		///  
		/// How many attributes are in this AttributeList 
		/// 
		public int Count
		{
			get 
			{
				return m_list.Count;
			}
		}

		///  
		/// A list of the attributes in this AttributeList 
		/// 
		protected ArrayList List
		{
			get 
			{
				return m_list;
			}
		}

		///  
		/// Access the individual attributes 
		/// 
		public Attribute this[int index]
		{
			get 
			{
				if ( index 
		/// Access the individual attributes by name. 
		/// 
		protected Attribute this[string index]
		{
			get 
			{
				int i=0;

				while ( this[i]!=null )  
				{
					if ( this[i].Name.ToLower().Equals( (index.ToLower()) ))
						return this[i];
					i++;
				}

				return null;

			}
		}
	}
 
}