HTMLAgilityPack y separación en

html-agility-pack

Pregunta

Tengo algunos html, que están separados por <br/> por ejemplo:

Jack Janson
<br/>
309 123 456
<br/>
My Special Street 43

¿Cuál es la forma más fácil de recuperar la información en 3 columnas?

No soy un experto en XPath, así que otro enfoque sería separar la cadena en el salto de línea, y simplemente trabajar con la matriz. ¿Hay una manera más inteligente de hacerlo?

Actualización: Se olvidó de formatear el código.

Respuesta aceptada

En XPATH puro sobre XML, usaría una expresión XPATH como esta: //preceding-sibling::br o //following-sibling::br (consulte aquí para obtener ayuda sobre los ejes XPATH )

Pero, la implementación XPATH sobre HTML que encontrará en Html Agility Pack no es compatible con el nodo de texto puro o (nodo de atributo) en las expresiones de selección XPATH ( //br/text() o //br/@blah no funcionan para ejemplo). Tenga en cuenta que funciona en los filtros, por lo tanto, estos //br[text()='blah'] o //br[@att='blah'] funcionan.

Entonces, volviendo a la pregunta, necesitas combinar XPATH y el código, algo como esto:

HtmlDocument doc = new HtmlDocument();
doc.Load(myHtmlFile);

foreach (HtmlNode p in doc.DocumentNode.SelectNodes("//br"))
{
    Console.WriteLine(p.PreviousSibling.InnerText.Trim());
}

Que saldrá

Jack Janson
309 123 456


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é