Lux*_*uxC 6 html c# parsing html-agility-pack
我有一些HTML:
<h2>Results</h2>
<div class="box">
<table class="tFormat">
<th>Head</th>
<tr>1</tr>
</table>
</div>
<h2>Grades</h2>
<div class="box">
<table class="tFormat">
<th>Head</th>
<tr>1</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
我想知道如何在"结果"下获得该表
我试过了:
var nodes = doc.DocumentNode.SelectNodes("//h2");
foreach (var o in nodes)
{
if (o.InnerText.Equals("Results"))
{
foreach (var c in o.SelectNodes("//table"))
{
Console.WriteLine(c.InnerText);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但它也获得了Grades h2下的表格
请注意,div在标题内不是分层次的,因此在那里查找它没有意义.
这可以为你工作 - 它找到标题后面的下一个元素:
if (o.InnerText.Equals("Results"))
{
var nextDiv = o.NextSibling;
while (nextDiv != null && nextDiv.NodeType != HtmlNodeType.Element)
nextDiv = nextDiv.NextSibling;
// nextDiv should be correct here.
}
Run Code Online (Sandbox Code Playgroud)
您还可以编写更具体的xpath来查找该div:
doc.DocumentNode.SelectNodes("//h2[text()='Results']/following-sibling::div[1]");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1651 次 |
| 最近记录: |