可能重复:
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;
}
答案 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