Ich bin neu im HTML-Agility-Paket und habe nicht herausgefunden, wie ich den folgenden Codeblock analysieren kann:
<p>
<div class='myclass1'>
<div id='idXXXX'>content1<br>content2
</div>
<div class="myclass2">
<table>
<tr>
<td align="left">content3 <b><a href="">content4</a></b></td>
<td align="right">content5 <b><a href="">content6</a></b></td>
</tr>
</table>
</div>
</div>
</p>
Wobei XXXX eine zufällig generierte Nummer ist.
Ich habe den ganzen Code, um das HTML-Dokument zu laden.
Was ich von dem obigen Code will, ist content1 und content2 und in einem anderen Abfrage content4.
var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectSingleNode("//div[@class='myclass1']");
var firstDiv = res.SelectSingleNode("div");
var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
var content4 = res.SelectSingleNode(".//div[@class='myclass2']")
.SelectSingleNode(".//td[@align='left']/b/a")
.InnerText
.Trim();
AKTUALISIEREN:
Wenn Sie mehrere divs mit den angegebenen Klassen haben und den Inhalt für jede dieser Klassen anpassen möchten, können Sie Folgendes tun:
var doc = new HtmlDocument();
doc.Load("test.htm");
var res = doc.DocumentNode.SelectNodes("//div[@class='myclass1']");
foreach (var item in res)
{
var firstDiv = item.SelectSingleNode("div");
var content1 = firstDiv.ChildNodes[0].InnerText.Trim();
var content2 = firstDiv.ChildNodes[2].InnerText.Trim();
var content4 = item.SelectSingleNode(".//div[@class='myclass2']")
.SelectSingleNode(".//td[@align='left']/b/a")
.InnerText
.Trim();
}