Analizar tablas en documentos HTML y extraer TR y TD. con HTML Agility Pack

html-agility-pack html-parsing vb.net

Pregunta

He asignado un trabajo para convertir datos antiguos en formato de tabla a formato nuevo.

Los datos ficticios antiguos son los siguientes:

<table>
<tr>
<td>Some text 1.</td>
<td>Some text 2.</td>
</tr>
..... //any number of TRs goes here
</table>

El problema es que los nuevos datos deben estar en este formato:

Un poco de texto 1. - Un poco de texto 2. ....

Resumen de lo que hay que hacer aquí:

Encuentra todos los TRs en la tabla. para cada TR, encuentre el primer TD y concatene con el segundo TD separado por "-".

Estoy usando HTML Agility Pack con VB.Net.

Por favor ayuda.

Gracias y saludos.

Respuesta popular

Puede usar Linq y HtmlAgilityPack para obtener todos los td's del nodo de la tabla, obtener todo el texto interno de estos nodos y crear un nuevo TR / TD.

// tableNode is the <table> HtmlNode. If you know where is this table you can use XPath to find him.

Dim sb As New StringBuilder()
For Each childNode As HtmlNode In tableNode.DescendantNodes().Where(Function(n) n.Name = "td")
    sb.Append(String.Format("{0} - ", childNode.InnerText))
Next

tableNode.RemoveAllChildren()

Dim newTrNode As HtmlNode = tableNode.OwnerDocument.CreateElement("tr")
Dim newTdNode As HtmlNode = tableNode.OwnerDocument.CreateElement("td")

newTdNode.InnerHtml = sb.ToString()
newTrNode.AppendChild(newTdNode)

tableNode.AppendChild(newTrNode)

Espero que ayude



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow