Sintaxis de SelectNodes de HtmlAgilityPack

.net c# html html-agility-pack xpath

Pregunta

Tengo el siguiente HTML:

<tbody>
    <tr>
        <td class="metadata_name">Headquarters</td>
        <td class="metadata_content">Princeton New Jersey, United States</td>
    </tr>
    <tr>
        <td class="metadata_name">Industry</td>
        <td class="metadata_content"><ul><li><a href="/q-Engineering-Software-jobs.html" rel="nofollow">Engineering Software</a></li><li><a href="/q-Software-Development-&amp;-Design-jobs.html" rel="nofollow">Software Development &amp; Design</a></li><li><a href="/q-Software-jobs.html" rel="nofollow">Software</a></li><li><a href="/q-Custom-Software-&amp;-Technical-Consulting-jobs.html" rel="nofollow">Custom Software &amp; Technical Consulting</a></li></ul></td>
    </tr>
    <tr>
        <td class="metadata_name">Revenue</td>
        <td class="metadata_content">$17.5 Million</td>
    </tr>
    <tr>
        <td class="metadata_name">Employees</td>
        <td class="metadata_content">201 to 500</td>
    </tr>
    <tr>
        <td class="metadata_name">Links</td>
        <td class="metadata_content"><ul><li><a href="/url?q=http%3A%2F%2Fwww.site.com&amp;h=085df2ca" target="_blank">Company website</a></li></ul></td>
    </tr>
</tbody>

Quiero poder cargar el valor de metadata_content (por ejemplo, "$ 17.5 Million") en una var, donde el metadata_name es = en un valor (por ejemplo, "Ingresos").

He intentado usar combinaciones de código como esta durante unas horas ...

orgHtml.DocumentNode.SelectNodes("//td[@class='metadata_name']")[0].InnerHtml;

Pero no estoy obteniendo la combinación correcta. Si tiene una sintaxis de SelectNodes útil, eso me dará la solución que le agradecería.

Respuesta aceptada

Parece que lo que estás buscando es esto:

var found = orgHtml.DocumentNode.SelectSingleNode(
    "//tr[td[@class = 'metadata_name'] = 'Revenue']/td[@class = 'metadata_content']");
if (found != null)
{
    string html = found.InnerHtml;
    // use html
}

Tenga en cuenta que para obtener el texto de un elemento, debe usar found.InnerText , no found.InnerHtml , a menos que necesite específicamente su contenido HTML.



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué