Question

Je suis en train d'analyser un fichier HTML et j'ai quelques problèmes.

J'utilise le code ci-dessous:

MODIFIER********************************

Le code mis à jour fonctionne maintenant.

void privé PhoneApplicationPage_Loaded (expéditeur d'objet, RoutedEventArgs e) {

    WebClient client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

    client.DownloadStringAsync(new Uri(@"http://www.SourceURL.com"));

}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    var html = e.Result;

    var doc = new HtmlDocument();
        doc.LoadHtml(html);

    var list = doc.DocumentNode.Descendants("div").ToList();


    var node = doc.DocumentNode.Descendants("div")
        .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
        .Element("table")
        .Element("tbody")
        .Elements("tr").Aggregate("Flight list\n", (acc, n) => acc + "\n" + n.InnerHtml);
       // .Elements("td")

    this.scrollViewer1.Content = node;




       }

    }
}

Cela me donne ce résultat.

entrez la description de l'image ici

Tous les résultats sont maintenant affichés comme requis.

Ma question était: Comment puis-je changer ce code pour afficher tous les résultats sous tous les <tr>'s

modifier ############################# XAML

    WebClient client = new WebClient();
    client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);

    client.DownloadStringAsync(new Uri(@"http://www.SourceURL.com"));

}

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    var html = e.Result;

    var doc = new HtmlDocument();
        doc.LoadHtml(html);

    var list = doc.DocumentNode.Descendants("div").ToList();


    var node = doc.DocumentNode.Descendants("div")
        .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
        .Element("table")
        .Element("tbody")
        .Elements("tr").Aggregate("Flight list\n", (acc, n) => acc + "\n" + n.InnerHtml);
       // .Elements("td")

    this.scrollViewer1.Content = node;




       }

    }
}

Réponse acceptée

En supposant que vous disposiez des mêmes méthodes que lorsque vous utilisez XElement, cela devrait faire l'affaire

var text = list.Descendants("div")
                 .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
                 .Element("table")
                 .Element("tbody")
                 .Descendants("tr").Aggregate("",(acc,n)=>acc+"\n"+n.OuterHtml);

 this.textBlock2.Text = text;

Réponse populaire

var node = doc.DocumentNode.Descendants("div")
    .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
    .Element("table")
    .Element("tbody")
    .Descendants("tr").ToArray();

this.textBlock2.Text = string.Join(Environment.NewLine, node.Select(tr => tr.InnerHtml));

vous pouvez simplement obtenir toutes les lignes par

var node = doc.DocumentNode.Descendants("div")
    .FirstOrDefault(x => x.Id == "FlightInfo_FlightInfoUpdatePanel")
    .Element("table")
    .Element("tbody")
    .Descendants("tr").ToArray();

this.textBlock2.Text = string.Join(Environment.NewLine, node.Select(tr => tr.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