Posted to tcl by jdc at Wed Jun 06 08:34:02 GMT 2007view pretty
package require htmlparse set htmltxt "<table><tr><td>1</td><td>2</td></tr><tr><td><table><tr><td>1-1</td><td>2-2</td></tr><tr><td><b>3-3</b></td><td>4-4</td></tr></table></td><td>4</td></tr></table>" set tid 0 proc my_callback { tag slash param text } { global tid tdta trdta tddta puts "$tid: $tag $slash $param $text" switch -exact -- $tag { table { if { $slash eq "/" } { if { $tid > 1 } { lappend tddta([expr {$tid-1}]) $tdta($tid) } incr tid -1 } else { incr tid 1 set tdta($tid) [list] set trdta($tid) [list] set tddta($tid) [list] } } tr { if { $slash eq "/" } { lappend tdta($tid) $trdta($tid) set trdta($tid) [list] } } td { if { $slash eq "/" } { lappend trdta($tid) $tddta($tid) set tddta($tid) [list] } else { if { [string length $text] } { lappend tddta($tid) $text } } } default { if { $slash ne "/" } { if { [string length $text] } { lappend tddta($tid) $text } } } } } htmlparse::parse -cmd my_callback $htmltxt parray tdta