2010-04-03 4 views
0

Je suis en train d'analyser les informations tabulaires html à l'aide du pack d'agilité html. Maintenant, d'abord je trouve les lignes de cette table commeAnalyse des données de cellule tabulaire avec l'espace où se trouve l'étiquette td

var rows = table.Descendants("tr");

puis-je trouver les données de cellule pour chaque ligne comme

foreach(var row in rows) 
{ 
    string rowInnerText = row.InnerText; 
} 

Cela me donne la cellule data.But sans espaces entre les comme NameAdressPhone No mais je veux le innertext comme Nom Adresse Téléphone No signifie où il y a td tag Je veux garder là un espace entre diffe louer colonne cellule.

Répondre

1

est ici une idée, mais pas testées:

var rows = table.Descendants("tr").Select(tr => 
    string.Join(" ", tr.Descendants("td").Select(td => td.InnerText).ToArray())); 

Cela devrait vous donner en IEnumerable<string> où chaque élément contenu représente une ligne de la table, dans le format décrit dans votre question. Si vous avez besoin réellement votre boucle sur les lignes pour un autre traitement, gardez votre boucle foreach et utiliser la magie LINQ dans son corps:

var rows = table.Descendants("tr"); 

foreach (var row in rows) 
{ 
    string rowInnerText = string.Join(" ", 
     row.Descendants("td").Select(td => td.InnerText).ToArray()); 
} 
+0

@Jorn Schou-Rode, Merci pour le answer.In le second code Y at-il quelque chose qui manque parce que je reçois l'erreur TR n'existe pas dans ce contexte. – Harikrishna

+0

@Harikrishna: Mon mauvais, mélangé 'td' et' row'. Devrait être réparé maintenant. –

+0

@Jorn Schou-Rode, Non Je l'ai vérifié mais il n'y a pas d'espace entre l'en-tête de la colonne et j'ai obtenu le même résultat que ce que j'ai obtenu en premier. – Harikrishna