Ottieni un valore da un documento html

c# document html html-agility-pack nodes

Domanda

Posso avere qualche aiuto per ottenere un valore da un documento HTML?

Ecco il contenuto del documento:

<html>
  <head>
    <style>body, table, input, select, textarea, button {   font: normal 1em Verdana, Sans-Serif; } body {  font-size: 0.8em; } a { color:#336600; } b { color:#003300; }.header {font-family: verdana; font-size: 15px; color:#003300; font-weight:bold;}.back {background-color:#DBF0DB;}.back2 {background-color:#009933;}            
    </style>
  </head>
  <body>
    <table border="0" cellpadding="3" cellspacing="1" width="100%">
      <tr>
        <td colspan="2" class="header">#827216</td>
      </tr>
    </table>
<body>
</html> 

Sto cercando di recuperare il valore # 827216.

Ecco il codice con cui sto lavorando, che non funziona correttamente:

<html>
  <head>
    <style>body, table, input, select, textarea, button {   font: normal 1em Verdana, Sans-Serif; } body {  font-size: 0.8em; } a { color:#336600; } b { color:#003300; }.header {font-family: verdana; font-size: 15px; color:#003300; font-weight:bold;}.back {background-color:#DBF0DB;}.back2 {background-color:#009933;}            
    </style>
  </head>
  <body>
    <table border="0" cellpadding="3" cellspacing="1" width="100%">
      <tr>
        <td colspan="2" class="header">#827216</td>
      </tr>
    </table>
<body>
</html> 

E qui c'è l'errore:

L'espressione deve essere valutata su un set di nodi

Risposta accettata

Ciò otterrà il contenuto indipendentemente dal tuo HTML non valido:

HtmlNodeCollection tables = hdoc.DocumentNode.SelectNodes("//table[1]");
HtmlNodeCollection cells = tables[0].SelectNodes("//tr/td");
var cellText = cell[0].InnerHtml;

Dovresti correggere il tuo codice HTML, chiudi il tag <body> .


Risposta popolare

Il tuo codice HTML non è XML valido. Il tag del body non è chiuso. Anche l'espressione XPath dovrebbe essere /html/body/table/tr/td per arrivare all'elemento td . Inoltre, per ottenere un elemento dovresti usare selectSingleNode




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché