Verwenden des HTML-Agility-Pakets; Wie würde ich ein HTML- "Fragment" aus einem vollständigen HTML-Dokument extrahieren? Für meine Zwecke ist ein HTML- "Fragment" definiert als der gesamte Inhalt innerhalb der <body>
-Tags.
Beispielsweise:
Beispiel Eingabe:
<html>
<head>
<title>blah</title>
</head>
<body>
<p>My content</p>
</body>
</html>
Gewünschte Ausgabe:
<p>My content</p>
Idealerweise würde ich den Inhalt unverändert zurückgeben, wenn er kein <html>
oder <body>
-Element enthält (z. B. angenommen, dass ich ein Fragment überhaupt übergeben habe, wenn es kein vollständiges html-Dokument war).
Kann mir jemand in die richtige Richtung zeigen?
Ich denke du musst es in Stücken machen.
Sie können selectnodes des Dokuments für Körper oder HTML wie folgt tun
doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)
Dann können Sie nach Nullwerten für Kriterien suchen. Wenn dies der Fall ist, können Sie die Zeichenfolge so übernehmen, wie sie ist.
Ich hoffe es hilft :)
Folgendes wird funktionieren:
public string GetFragment(HtmlDocument document)
{
return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}