ich den Tisch zu bekommen, die sich direkt hinter einem Element befindet:Holen Sie sich das Tisch direkt hinter einem Element
<body>
<h3>test</h3>
<table>
<tr><td>abc</td></tr>
</table>
<h3>test2</h3>
<table>
<tr><td>def</td></tr>
</table>
[...]
</body>
Deshalb möchte ich nur die Tabelle nach dem h3 Element „Test“ bekommen (oder den Inhalt von der Tabelle, aber ich weiß, wie man diese Art von Sachen macht). Die Tabelle "Test" steht nicht immer an erster Stelle, könnte auch irgendwo nach der Sekunden-Tabelle liegen.
[Bearbeiten]
Wissen Sie, warum dieser Code:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html); //your test html
var s = doc.DocumentNode.Descendants("table").Where(_ => _.PreviousSibling.PreviousSibling.Name.Equals("h3") && _.PreviousSibling.PreviousSibling.InnerText.Equals("test"));
foreach (var st in s)
{
Debug.WriteLine(st.InnerHtml);
}
funktioniert nicht, wenn ich die Rückkehr nach "/ h3" und "table" entfernen?
Es sieht wie folgt aus:
string html = @"<body><h3>test</h3><table><tr><td>abc</td></tr></table><h3>test2</h3><table><tr><td>def</td></tr></table></body>"
anstelle der HTML-Code, oben aber das Ergebnis null ist ...
Aber wie suche ich nach dem Text in h3 (Test)? Weil ich zwei h3 –
So etwas wie das? 'doc.DocumentNode.Nachfolger ("Tabelle"). Where (_ => _.PreviousSibling.PreviousSibling.Name.Equals ("h3") && _.VorherigesSibling.PreviousSibling.InnerText.Equals ("test")); ' –
Ok danke: D –