Posted to tcl by jdc at Wed Jun 06 08:34:02 GMT 2007view raw
- 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