Html Agility Pack Xpath

c# html-agility-pack xpath

Pregunta

¿Cómo puedo usar este xPath con Html Agility Pack?

xPath:

//div[@class='test']/(text())[last()]

He intentado este código:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='test']/(text())[last()]"))
            {
                test = node.InnerText();
            }

HTML:

<div class="test">
        <ul>
            <li><b>Test1</b>Test1 Text</li>
            <li><b>Test2</b>Test2 Text</li>
        </ul>
    </div>

Necesito extraer "Test2 Text" sin especificar la etiqueta ul en xPath.

Respuesta aceptada

Puedes intentar usar este XPath:

(//div[@class='test']//text()[normalize-space()])[last()]

//div[@class='test']//text()[normalize-space()] encuentra todos los nodos de texto no vacíos dentro de la div . Y luego, [last()] devuelve solo el último nodo de todos los nodos de texto encontrados.

Ejemplo de demostración de trabajo (verlo en línea aquí ) :

var html = @"<div class='test'>
<ul>
    <li><b>Test1</b>Test1 Text</li>
    <li><b>Test2</b>Test2 Text</li>
</ul>
";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("(//div[@class='test']//text()[normalize-space()])[last()]");
Console.WriteLine(node.InnerText);

salida:

Test2 Text


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é