Para usarla declaramos una variable de la clase y usamos el método LoadHtml para cargar el documento, el argumento debe ser una cadena conteniendo el html, de momento no se pueden cargar documentos directamente:
HtmlAgilityPack.HtmlDocument doc
= new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlstring);
Una vez que tenemos cargado el html podemos usar sus objetos programáticamente, para encontrar el nodo base del documento (que podria ser html), tenemos la propiedad DocumentNode:
doc.DocumentNode
Para buscar un nodo especifico a partir de otro nodo tenemos el método SelectNodes que toma como argumento una cadena con una expresión de XPath, por ejemplo para encontrar una tabla con ancho de 100%:
doc.DocumentNode.SelectNodes("//table[@width='100%']")[0]
Nótese que tomamos el primer elemento, ya que el método obtiene una colección con todos los elementos que cumplen la condición, alternativamente el método SelectSingleNode que obtiene solo el primer elemento.
Para obtener un elemento en particular de un nodo también podemos usar la colección ChildNodes del nodo la cual contiene todos los elementos directos del nodo:
doc.DocumentNode.SelectNodes("//table[@width='100%']")[0].ChildNodes[1]
En conclusión HtmlAgilityPack es una herramienta muy robusta y útil para lidiar con html, acepta html con errores y nos permite manejarlo de manera similar a Xml.
No hay comentarios:
Publicar un comentario