HTMLAgilityPack obtenir innerText d'une balise td avec un attribut id
Je suis en train de sélectionner le texte interne d'un td avec un attribut id avec la HTMLAgilityPack.
Code Html:
<td id="header1"> 5 </td>
<td id="header2"> 8:39pm </td>
<td id="header3"> 8:58pm </td>
...
Code:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(data);
var nodes = doc.DocumentNode.SelectNodes("//td[@id='header1']");
if (nodes != null)
{
foreach (HtmlAgilityPack.HtmlNode node in nodes)
{
MessageBox.Show(node.InnerText);
}
}
Je reçois null parce que je ne suis pas la sélection de la balise td correctement, mais ne peut pas comprendre ce que j'ai fait de mal...
Edit:
J'ai fait une erreur avec header1 et header2, mais il y en a 5 différentes balises td avec les en-têtes de 1 à 5.
Avez-vous vérifier ces Identifiants que vous avez prises.
En html, l'id est
Ton code semble correct. Vous pouvez poster vos données quelque part?
<td id="header2">
et vous récupérez à partir de (//td[@id='header1'");
En html, l'id est
header2
alors que dans le code, il est précisé que header1
.Ton code semble correct. Vous pouvez poster vos données quelque part?
OriginalL'auteur cheeseman | 2013-03-16
Vous devez vous connecter pour publier un commentaire.
Que vous essayez de sélectionner
header1
mais l'id estheader2
.Vous pouvez également utiliser
GetElementById
directement:OriginalL'auteur Rango
Hmm.. je ne pense pas que vous faites quelque chose de mal. Votre code doit vous donner uniquement les
<td>
avecid="header1"
. Si vous avez, disons, deheader1
àheader5
, vous pouvez le faire:bien que je vous suggère de poster votre code entier, de sorte que nous pouvons vous dire pourquoi tu es
null
, et aussi une meilleure façon de l'analyse de la<td>
nœuds sans faire le au-dessus de la boucle (par exemple. quelque chose comme//tr[@id='some-id']//td[contains(@id, 'header')]
.OriginalL'auteur Oscar Mederos
Vous pouvez Résoudre votre Problème à l'aide de la Propriété InnerHtml Comme:
OriginalL'auteur Faraz