Utilizzando il pacchetto di agilità html; come posso estrarre un "frammento" html da un documento html completo? Per i miei scopi, un "frammento" html è definito come tutto il contenuto all'interno dei tag <body>
.
Per esempio:
Esempio di input:
<html>
<head>
<title>blah</title>
</head>
<body>
<p>My content</p>
</body>
</html>
Uscita desiderata:
<p>My content</p>
Idealmente, mi piacerebbe restituire inalterato il contenuto se non contenesse un elemento <html>
o <body>
(ad esempio, supponiamo che mi sia passato un frammento in primo luogo se non fosse un documento html completo)
Qualcuno può indicarmi la giusta direzione?
Penso che tu debba farlo a pezzi.
puoi fare selectnodes di documento per body o html come segue
doc.DocumentNode.SelectSingleNode("//body") // returns body with entire contents :)
quindi è possibile verificare i valori nulli per i criteri e, se viene fornito, è possibile prendere la stringa così com'è.
Spero che sia d'aiuto :)
Quanto segue funzionerà:
public string GetFragment(HtmlDocument document)
{
return doc.DocumentNode.SelectSingleNode("//body") == null ? doc.DocumentNode.InnerHtml : doc.DocumentNode.SelectSingleNode("//body").InnerHtml;
}