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:
<p>My content</p>
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?
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 :)
Ce qui suit fonctionnera:
public string GetFragment(HtmlDocument document)
{
return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}