18

Mar

WinRT & Html Manipulation + HtmlAgilityPack

Ciao a tutti

 

una grande categoria di applicazioni ha bisogno di manipolare l’HTML come ad esempio gli RSS reader

le operazioni principali da fare sono in genere mostrare l’HTML come testo all’interno delle proprie applicazioni, possibilmente in maniera formattata

in questo caso WinRT ci da a disposizione una classe molto comoda che è Windows.Data.Html.HtmlUtilities

in questa classe il metodo statico ConvertToText fa il grosso del lavoro per noi, convertendo l’HTML in testo formattato ad esempio con i ritorni a capo, senza importare elementi multimediali come immagini e simili

image

 

altra classe utile per manipolare l’HTML è la System.Net.WebUtility che copre il ruolo della HttpUtility (non WinRT), dandoci la possibilità di fare l’encoding ed il decoding dell’HTML per poterlo ad esempio storare all’interno di un file o di un DB senza incorrere in pericolose injection di vario tipo (script, sql, etc)

 

image

image

 

ultimo consiglio, l’uso delle librerie HtmlAgilityPack, disponibili da un po anche per WinRT

come la grande maggioranza delle librerie, è disponibile su NuGet

 

image

 

con HtmlAgilityPack è possibile fare il parse dell’HTML anche quando questo è poco ben strutturato, come ad esempio per i vecchi HTML 4.0

 

con questo codice è possibile ad esempio prendere la prima immagine (tag IMG) per usarla magari in binding da un ViewModel per connetterla ad un controllo image

XAML:

C#:

public string Image
{
    get
    {
        //il proprio HTML magari preso dal tag description di un RSS
        string myHTML="";
        var doc = new HtmlDocument();
        doc.LoadHtml(myHTML);
        var images = doc.DocumentNode.Descendants("img").Select(i => i.Attributes["src"].Value);
        return images.FirstOrDefault();
    }
}

 

 

a presto

by Antonio Esposito on 3/18/2013