Html Agility Pack - Holen Sie sich HTML-Fragment aus einem HTML-Dokument

c# html html-agility-pack

Frage

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?

Akzeptierte Antwort

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 :)


Beliebte Antwort

Folgendes wird funktionieren:

public string GetFragment(HtmlDocument document)
{
   return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum