2011-09-15 12 views
0

可能性の重複各ノードの値を確認するには:
Check each node in the list which contains another list and can go deeperどのようにリストに

を、私は、ノードのリストを持って、再び各ノードがノードのリストにすることができ、それが継続することができますより深くする。 今、すべてのノードで特定の文字列(htmlタグなど)(子リストを持たない)をチェックしたいと思います。

私はこのための疑似コードが必要です。これはC#リストまたはIEnumeraterではありませんが、私はHtmlAgilityPackを使用して特定のhtmlタグを調べるためにウェブページ内のすべての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

あなたは、あなたと同じ(ほぼ)閉じた質問のすべてのコメントを無視したようです。もう一度お尋ねする前にそれらに対処してください。追加する必要がある場合は元の質問を編集します。 – Oded

+0

私はそれらのコメントに私の応答を掲載しました...より具体的にしてください。私は提供するより多くの情報を持っていない。 – Praneeth

+1

コメントを投稿する代わりに質問を編集します。 – Oded

答えて

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 
+0

の大胆な部分を確認してください。ある段階で再帰的に行くと再帰的な完了し、それから出てくると、それは子ノードの実行を開始する必要がありますメインループを離れた主なリスト...ループは、子ノードを覚えていませんが、それは探し続けるべきです... – Praneeth

+0

何を?これは再帰関数です。探しているものが見つかるまでノードのリストに深く入り込み、それを返します。 – Ivan

+0

はい、内部に入っていますが、メインノードを残して残っているノードの実行を続けるリストノードに戻っていません – Praneeth

関連する問題