|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Runtime.CompilerServices;
namespace AngleSharp.DOM.Collections
{
/// <summary>
/// A collection of HTML nodes.
/// </summary>
[DOM("HTMLCollection")]
public class HTMLCollection : BaseCollection<Element>
{
#region ctor
/// <summary>
/// Creates a new list of HTML elements.
/// </summary>
internal HTMLCollection()
{
}
#endregion
#region Index
/// <summary>
/// Gets a node within the list of nodes.
/// </summary>
/// <param name="id">The id of the node.</param>
/// <returns>The node with the specified identifier.</returns>
public Object this[String id]
{
get { return NamedItem(id); }
}
#endregion
#region Methods
/// <summary>
/// Returns the specific node whose id matches the string specified by the attribute.
/// Matching by name is only done as a last resort, only in HTML, and only if the referenced
/// element supports the name attribute. Returns null if no node exists by the given name.
/// </summary>
/// <param name="id">The id of the element.</param>
/// <returns>The found element.</returns>
[DOM("namedItem")]
public virtual Object NamedItem(String id)
{
var result = new HTMLCollection();
for (int i = 0; i < _entries.Count; i++)
{
if (_entries[i].Id == id)
result.Add(_entries[i]);
}
if (result.Length == 1)
return result[0];
else if (result.Length != 0)
return result;
for (int i = 0; i < _entries.Count; i++)
{
if (_entries[i].GetAttribute("name") == id)
result.Add(_entries[i]);
}
if (result.Length == 1)
return result[0];
else if (result.Length != 0)
return result;
return null;
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Florian lives in Munich, Germany. He started his programming career with Perl. After programming C/C++ for some years he discovered his favorite programming language C#. He did work at Siemens as a programmer until he decided to study Physics.
During his studies he worked as an IT consultant for various companies. After graduating with a PhD in theoretical particle Physics he is working as a senior technical consultant in the field of home automation and IoT.
Florian has been giving lectures in C#, HTML5 with CSS3 and JavaScript, software design, and other topics. He is regularly giving talks at user groups, conferences, and companies. He is actively contributing to open-source projects. Florian is the maintainer of AngleSharp, a completely managed browser engine.