Analizza tabelle in documenti HTML ed estrae TR e TD. con HTML Agility Pack

html-agility-pack html-parsing vb.net

Domanda

Ho dato un lavoro per convertire vecchi dati in formato tabella in un nuovo formato.

I vecchi dati fittizi sono i seguenti:

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

Il problema è che i nuovi dati devono essere in questo formato:

Qualche testo 1. - Qualche testo 2. ....

Riepilogo di ciò che deve essere fatto qui:

Trova tutti i TRs nella tabella. per ogni TR trova il primo TD e concatena con il secondo TD separato da "-".

Sto usando HTML Agility Pack con VB.Net.

Per favore aiuto.

Grazie e saluti.

Risposta popolare

È possibile utilizzare Linq e HtmlAgilityPack per ottenere tutti i td dal nodo della tabella, ottenere tutto il InnerText di questi nodi e creare un nuovo 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)

spero possa essere d'aiuto




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché