HTML敏捷包装第一个特定的子节点

时间:2015-09-29 13:52:10

标签: filter nodes html-agility-pack child-nodes

<html>
<body>
    <p> This 
        <p> should not be displayed twice</p>
    </p>
    <a href="http://www.w3schools.com">Visit W3Schools.com!</a> 
    <div> Do not enter</div>
    <p> Gibberish </p>
</body>
</html>

所以我想访问body标签的某些第一个子节点。在这种情况下,我只想要p-tag和a-tag。

当前代码:

foreach(HtmlNode h in body.Elements("p"))
{
    if (h.Name == "p"){
        //Do something
    }
    if (h.Name == "a"){
       //Do something else
    }
}

显然这不起作用,因为我只从body标签中获取p-tag。但是有一些很棒的xpath代码可以让我得到a-tags。

1 个答案:

答案 0 :(得分:1)

您可以使用&#34;或&#34; (|)在你的xpath中。所以你出来看起来像这样:

String xPath = "p|a";
HtmlNodeCollection bodyDecendants = bodyNode.SelectNodes(xPath);