所以基本上我想过滤掉HTML并保留节点的层次结构。例如,我有这个,我只想要在其层次结构中具有类“b.1.1”的HTML:
<html>
<div class="a">
</div>
<div class="b">
<div class="b.1">
<div class="b.1.1">
<span>me</span>
</div>
<div class="b.1.2">
</div>
</div>
</div>
<div class="c">
</div>
</html>
结果应为:
<html>
<div class="b">
<div class="b.1">
<div class="b.1.1">
<span>me</span>
</div>
</div>
<div>
</html>
有什么想法吗?
答案 0 :(得分:1)
你可以写一个递归函数,一直到父节点:
private HAP.HtmlNode FindParentNodeThatContainsClass(string classToFind, HAP.HtmlNode node)
{
string xPath = string.Format("//*[contains(@class,'{0}')]", classToFind);
if ( node.SelectNodes(node.XPath + "//" + xPath ) != null && node.SelectNodes(node.XPath + "//" + xPath ).Count() >= 1)
{
return node;
}
else
{
if (node.ParentNode != null)
{
var parentNode = FindParentNodeThatContainsClass(xPath , node.ParentNode);
return parentNode;
}
else
{
return null;
}
}
}
我还没有测试过这个功能,但这应该可以让你开始。