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

搜索引擎

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. namespace HTMParse
  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. /// <summary>
  24. /// Make an exact copy of this object using the cloneable interface.
  25. /// </summary>
  26. /// <returns>A new object that is a clone of the specified object.</returns>
  27. public override Object Clone()
  28. {
  29. AttributeList rtn = new AttributeList();
  30. for ( int i=0;i<m_list.Count;i++ )
  31. rtn.Add( (Attribute)this[i].Clone() );
  32. return rtn;
  33. }
  34. /// <summary>
  35. /// Create a new, empty, attribute list.
  36. /// </summary>
  37. public AttributeList():base("","")
  38. {
  39. m_list = new ArrayList();
  40. }
  41. /// <summary>
  42. /// Add the specified attribute to the list of attributes.
  43. /// </summary>
  44. /// <param name="a">An attribute to add to this AttributeList.</param>
  45. public void Add(Attribute a)
  46. {
  47. m_list.Add(a);
  48. }
  49. /// <summary>
  50. /// Clear all attributes from this AttributeList and return it
  51. /// to a empty state.
  52. /// </summary>
  53. public void Clear()
  54. {
  55. m_list.Clear();
  56. }
  57. /// <summary>
  58. /// Returns true of this AttributeList is empty, with no attributes.
  59. /// </summary>
  60. /// <returns>True if this AttributeList is empty, false otherwise.</returns>
  61. public bool IsEmpty()
  62. {
  63. return( m_list.Count<=0);
  64. }
  65. /// <summary>
  66. /// If there is already an attribute with the specified name,
  67. /// then it will have its value changed to match the specified value.
  68. /// If there is no Attribute with the specified name, then one will
  69. /// be created.  This method is case-insensitive.
  70. /// </summary>
  71. /// <param name="name">The name of the Attribute to edit or create.  Case-insensitive.</param>
  72. /// <param name="value">The value to be held in this attribute.</param>
  73. public void Set(string name,string value)
  74. {
  75. if ( name==null )
  76. return;
  77. if ( value==null )
  78. value="";
  79. Attribute a = this[name];
  80. if ( a==null ) 
  81. {
  82. a = new Attribute(name,value);
  83. Add(a);
  84. else
  85. a.Value = value;
  86. }
  87. /// <summary>
  88. /// How many attributes are in this AttributeList
  89. /// </summary>
  90. public int Count
  91. {
  92. get 
  93. {
  94. return m_list.Count;
  95. }
  96. }
  97. /// <summary>
  98. /// A list of the attributes in this AttributeList
  99. /// </summary>
  100. public ArrayList List
  101. {
  102. get 
  103. {
  104. return m_list;
  105. }
  106. }
  107. /// <summary>
  108. /// Access the individual attributes
  109. /// </summary>
  110. public Attribute this[int index]
  111. {
  112. get 
  113. {
  114. if ( index<m_list.Count )
  115. return(Attribute)m_list[index];
  116. else
  117. return null;
  118. }
  119. }
  120. /// <summary>
  121. /// Access the individual attributes by name.
  122. /// </summary>
  123. public Attribute this[string index]
  124. {
  125. get 
  126. {
  127. int i=0;
  128. while ( this[i]!=null ) 
  129. {
  130. if ( this[i].Name.ToLower().Equals( (index.ToLower()) ))
  131. return this[i];
  132. i++;
  133. }
  134. return null;
  135. }
  136. }
  137. }
  138. }