使用HtmlAgilityPack检查Html标签是否存在于另一个Html标签中。

问题描述 投票:0回答:1

我有三个Html字符串

1.

 <h1>
    <table>...</table>
    </h1>

2.

<h1>
<p>
<table>...</table>
</p>
</h1>

3.

<h1>
    <p>
<div>
    <table>...</table>
    </div>
    </p>
    </h1>

我使用HtmlAgilityPack来检查h1标签是否包含table标签,如下所示

htmlDoc.DocumentNode.SelectNodes("/h1").Where(i => i.ChildNodes.Any(c => c.Name == "table"))

但是这个条件只适用于第一个html字符串。对于第2和第3个HTML字符串,我应该应用哪个条件?

我希望条件是检查表标签是否存在于h1标签内,而表标签可以在h1标签内的任何地方,请帮助我。

html tags html-agility-pack
1个回答
0
投票

你应该使用XPath语法而不是Linq。

使用双斜线"/"来选择一个相对路径在你的例子中。

var tableNodes = htmlDoc.DocumentNode.SelectNodes("//h1//table")
© www.soinside.com 2019 - 2024. All rights reserved.