Html Agility Pack - Extrait un fragment HTML d'un document HTML

c# html html-agility-pack

Question

Utilisation du pack d'agilité html; Comment puis-je extraire un "fragment" HTML d'un document HTML complet? Pour mes besoins, un "fragment" html est défini comme tout le contenu à l'intérieur des balises <body> .

Par exemple:

Exemple d'entrée:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

Sortie désirée:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

Idéalement, j'aimerais renvoyer le contenu sans modification s'il ne contenait pas d'élément <html> ou <body> (par exemple, supposons qu'un fragment ait été transmis si ce n'était pas un document HTML complet)

Est-ce que quelqu'un peut-il me montrer la bonne direction?

Réponse acceptée

Je pense que vous devez le faire en morceaux.

vous pouvez faire des selectnodes de document pour body ou html comme suit

doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)

alors vous pouvez rechercher des valeurs NULL pour les critères et si cela est fourni, vous pouvez prendre la chaîne telle quelle.

J'espère que cela aide :)


Réponse populaire

Ce qui suit fonctionnera:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi