public NodeValueComparer(NodeValueComparison comparison) { this.comparison = comparison; }
/// <summary> /// Gets the nodes followed by value. /// </summary> /// <param name="nodes">The nodes.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> /// <param name="comparison">The comparison.</param> /// <returns></returns> public static IEnumerable <HtmlNode> GetNodesFollowedByValue(this IEnumerable <HtmlNode> nodes, string name, string value, NodeValueComparison comparison = NodeValueComparison.Equals) { return(nodes.SelectMany(node => node.GetNodesFollowedByValue(name, value, comparison))); }
/// <summary> /// Gets the next table line value. /// </summary> /// <param name="node">The node.</param> /// <param name="name">The name.</param> /// <param name="comparison">The comparison type.</param> /// <returns></returns> public static HtmlValue GetNextTableLineValue(this HtmlNode node, string name, NodeValueComparison comparison = NodeValueComparison.Equals) { var results = GetNodesFollowedByValue(node, "tr", name, comparison); if (!results.Any()) { return(null); } var innerText = results.FirstOrDefault().InnerText.CleanInnerHtmlAscii().CleanInnerText(); if (innerText.StartsWith(":")) { innerText = innerText.Substring(1).CleanInnerHtmlAscii().CleanInnerText(); } return(innerText); }
/// <summary> /// Gets the nodes followed by value. /// </summary> /// <param name="node">The node.</param> /// <param name="name">The name.</param> /// <param name="value">The value.</param> /// <param name="comparison">The comparison.</param> /// <returns></returns> public static IEnumerable <HtmlNode> GetNodesFollowedByValue(this HtmlNode node, string name, string value, NodeValueComparison comparison = NodeValueComparison.Equals) { var comparer = new NodeValueComparer(comparison); var cleanName = value.CleanInnerText(); return((from d in node.Descendants(name) where comparer.Compare(d.InnerText.CleanInnerHtmlAscii().CleanInnerText(), cleanName) select d.GetNextSibling(name)).ToArray()); }