我有三个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标签内的任何地方,请帮助我。
你应该使用XPath语法而不是Linq。
使用双斜线"/"来选择一个相对路径在你的例子中。
var tableNodes = htmlDoc.DocumentNode.SelectNodes("//h1//table")