如何检查列表中每个节点的值

时间:2011-09-15 20:37:18

标签: c# .net pseudocode

  

可能重复:
  Check each node in the list which contains another list and can go deeper

我有节点列表,每个节点也可以是一个节点列表,它可以继续更深入。 现在我想检查某个字符串的所有节点(如html标签)(没有任何子列表)

我想要伪代码。这不是C#List或IEnumerater,但我使用HtmlAgilityPack来遍历网页中的所有htmlnodes以检查特定的html标记。

请勿将此问题标记为关闭...如果需要更多信息,请添加评论。但我试图编写通用代码...我没有任何id用于搜索。

public string GetText(HtmlNode htmlNodeTemp)
    {
       foreach (HtmlNode hn in htmlNodeTemp.ChildNodes)
        {
            if (hn.ChildNodes.Count > 1)
            {
                GetText(hn);
            }
            if (hn.SelectSingleNode("//p").OuterHtml.Contains("<p>"))
            {
                if (finalText != null)
                {
                    if (finalText.Length < hn.SelectSingleNode("//p").InnerText.Length)
                    {
                        finalText = hn.SelectSingleNode("//p").InnerText;
                    }
                }
                else
                {
                    finalText = hn.SelectSingleNode("//p").InnerText;
                }
            }
        }
       return finalText;
    }

1 个答案:

答案 0 :(得分:0)

您将要使用递归解决方案并检查元素是否存在。所以像这样的伪代码:

 Function FindTheNode (CurrentNode)

      Is the current node null?
            Yes -> Return null;

      Is the current node == Search String
            Yes -> return node;

      For each node X in the nodes of current node:
           var node = FindTheNode(X);

           is node non null?
              Yes -> return node

      Return null

  End