AttributeList.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:3k
源码类别:

搜索引擎

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. namespace XunLong.ModelUserClassLibrary
  4. {
  5. /// <summary>
  6. /// The AttributeList class is used to store list of
  7. /// Attribute classes.
  8. /// 
  9. /// This spider is copyright 2003 by Jeff Heaton. However, it is
  10. /// released under a Limited GNU Public License (LGPL). You may 
  11. /// use it freely in your own programs. For the latest version visit
  12. /// http://www.jeffheaton.com.
  13. ///
  14. /// </summary>
  15. /// 
  16. public class AttributeList:Attribute
  17. {
  18. /// <summary>
  19. /// An internally used Vector.  This vector contains
  20. /// the entire list of attributes.
  21. /// </summary>
  22. protected ArrayList m_list;
  23.         
  24. /// <summary>
  25. /// Make an exact copy of this object using the cloneable interface.
  26. /// </summary>
  27. /// <returns>A new object that is a clone of the specified object.</returns>
  28. public override Object Clone()
  29. {
  30. AttributeList rtn = new AttributeList();
  31. for ( int i=0;i<m_list.Count;i++ )
  32. rtn.Add( (Attribute)this[i].Clone() );
  33. return rtn;
  34. }
  35.         
  36. /// <summary>
  37. /// Create a new, empty, attribute list.
  38. /// </summary>
  39. public AttributeList():base("","")
  40. {
  41. m_list = new ArrayList();
  42. }
  43. /// <summary>
  44. /// Add the specified attribute to the list of attributes.
  45. /// </summary>
  46. /// <param name="a">An attribute to add to this AttributeList.</param>
  47. public void Add(Attribute a)
  48. {
  49. m_list.Add(a);
  50. }
  51. /// <summary>
  52. /// Clear all attributes from this AttributeList and return it
  53. /// to a empty state.
  54. /// </summary>
  55. public void Clear()
  56. {
  57. m_list.Clear();
  58. }
  59. /// <summary>
  60. /// Returns true of this AttributeList is empty, with no attributes.
  61. /// </summary>
  62. /// <returns>True if this AttributeList is empty, false otherwise.</returns>
  63. public bool IsEmpty()
  64. {
  65. return( m_list.Count<=0);
  66. }
  67. /// <summary>
  68. /// If there is already an attribute with the specified name,
  69. /// then it will have its value changed to match the specified value.
  70. /// If there is no Attribute with the specified name, then one will
  71. /// be created.  This method is case-insensitive.
  72. /// </summary>
  73. /// <param name="name">The name of the Attribute to edit or create.  Case-insensitive.</param>
  74. /// <param name="value">The value to be held in this attribute.</param>
  75. public void Set(string name,string value)
  76. {
  77. if ( name==null )
  78. return;
  79. if ( value==null )
  80. value="";
  81. Attribute a = this[name];
  82. if ( a==null ) 
  83. {
  84. a = new Attribute(name,value);
  85. Add(a);
  86. else
  87. a.Value = value;
  88. }
  89. /// <summary>
  90. /// How many attributes are in this AttributeList
  91. /// </summary>
  92. public int Count
  93. {
  94. get 
  95. {
  96. return m_list.Count;
  97. }
  98. }
  99. /// <summary>
  100. /// A list of the attributes in this AttributeList
  101. /// </summary>
  102. public ArrayList List
  103. {
  104. get 
  105. {
  106. return m_list;
  107. }
  108. }
  109. /// <summary>
  110. /// Access the individual attributes
  111. /// </summary>
  112. public Attribute this[int index]
  113. {
  114. get 
  115. {
  116. if ( index<m_list.Count )
  117. return(Attribute)m_list[index];
  118. else
  119. return null;
  120. }
  121. }
  122. /// <summary>
  123. /// Access the individual attributes by name.
  124. /// </summary>
  125. public Attribute this[string index]
  126. {
  127. get 
  128. {
  129. int i=0;
  130. while ( this[i]!=null ) 
  131. {
  132. if ( this[i].Name.ToLower().Equals( (index.ToLower()) ))
  133. return this[i];
  134. i++;
  135. }
  136. return null;
  137. }
  138. }
  139. }
  140. }