Posted to tcl by de at Tue Feb 13 23:54:43 GMT 2018view pretty

tDOM::pullparser pp
pp input {<doc><e1 a="b" foo:bar="c"><e2>foo</e2><e2></e2></e1><e1/></doc>}
puts [pp state]
while {[set state [pp next]] ne "END_DOKUMENT"} {
    puts -nonewline "$state "
    switch $state {
        "START_TAG" {
            puts [pp tag]
            foreach {attname attvalue} [pp attributes] {
                puts "\t$attname -> $attvalue"
            }
        }
        "TEXT" {
            puts [pp text]
        }
        "END_TAG" {
            puts [pp tag]
        }
    }
}
pp delete


START_DOKUMENT
START_TAG doc
START_TAG e1
        a -> b
        foo:bar -> c
START_TAG e2
TEXT foo
END_TAG e2
START_TAG e2
END_TAG e2
END_TAG e1
END_TAG e1
END_TAG doc
END_DOKUMENT