Förslagsvis med regular expressions, titta på System.Text.RegularExpressions (vill jag minnas) Finns enkla sätt, men de är oftast inte så säkra om html-koden ändrar form etc.Läsa ur data ur html
Har följande html inläst i en string (minHTML)
<code>
<table name="Colo" id="Colo">
<tr>
<td colspan=1>Address</td>
<td colspan=1>Color</td>
</tr>
<tr>
<td colspan=1><INPUT NAME="Address_0" ID="Address_0" TYPE="text" VALUE="0D00080192B39C10"></td>
<td colspan=1><INPUT NAME="Color_0" ID="Color_0" TYPE="text" VALUE="Blue"></td>
</tr>
</table>
</code>
Hur läser jag enklast ur värdena för Adress_0 och Color_0 ?
Dim adress as string = "0D00080192B39C10"
Dim frag as string = "Blue"Sv: Läsa ur data ur html
Sv: Läsa ur data ur html
Det säkraste är att använda eller skriva en html-parser.
Det finns en XML-parser i .NET, men den fungerar inte så bra på HTML.
Vi kan använda MSHTML som redan finns på din dator.
Kodexempel:
Imports mshtml
...
Dim html As String = "<table name=""Colo"" id=""Colo""><tr><td colspan=1>Address</td><td colspan=1>Color</td></tr><tr><td colspan=1><INPUT NAME=""Address_0"" ID=""Address_0"" type=""text"" VALUE=""0D00080192B39C10""></td><td colspan=1><INPUT NAME=""Color_0"" ID=""Color_0"" TYPE=""text"" VALUE=""Blue""></td></tr></table>"
Dim doc As IHTMLDocument2 = New HTMLDocumentClass()
doc.write(New Object() {html})
doc.close()
For Each element As IHTMLElement In DirectCast(doc.body.all, IHTMLElementCollection)
If element.id = "Address_0" Then MsgBox(element.getAttribute("value"))
If element.id = "Color_0" Then MsgBox(element.getAttribute("value"))
Next
För mshtml.dll finns en .NET-assembly som du måste lägga till med "Add Reference" och välja "Microsoft.mshtml".