Purpose: describe what expat is good for, and how Tcl programmers can make use of the binding. Expat is an [XML] SAX parser written in C. [tDOM] includes it and a set of Tcl bindings. ---- **Using Expat** This example was posted by [George Petasis] to [comp.lang.tcl]: ====== proc handle_start {name attributes args} { set ::CurrentTag $name };# handle_start proc handle_end {name args} { set ::CurrentTag {} };# handle_end proc handle_text {data args} { switch -exact $::CurrentTag { title {set ::CurrentTitle [string trim $data]} id {set ::CurrentId $data} text {# do something with the text } } };# handle_text ## Create a streaming xml parser... package require tdom expat xml -elementstartcommand handle_start \ -elementendcommand handle_end \ -characterdatacommand handle_text ## Open the input file (always in utf-8) set fd [open $in] fconfigure $fd -encoding utf-8 ## Parse the xml data... xml parsechannel $fd ## Done! Free parser and close file... close $fd xml free ====== ---- For expat usage examples, see: * [Playing SAX] * [XML Graph to canvas] <> Package | Parsing | XML