下面的程式使用 TclCurl 自網站下載 ATOM XML 的資料,
下載以後使用 tDom 分析並且將 title 與 link 的資料儲存為 html 格式。
只有使用自己的部落格資料測試過。
#!/usr/bin/env tclsh
package require TclCurl
package require tdom
proc get_atom {url} {
try {
set curlHandle [curl::init]
$curlHandle configure -url $url -bodyvar result
$curlHandle setopt CURLOPT_HTTP_VERSION 2TLS
catch { $curlHandle perform } curlErrorNumber
if { $curlErrorNumber != 0 } {
throw error [curl::easystrerror $curlErrorNumber]
}
} on error {em} {
error "Error: $em"
} finally {
$curlHandle cleanup
}
return $result
}
proc parse {XML ofname} {
set doc [dom parse $XML]
set root [$doc documentElement]
set ns {xmlns http://www.w3.org/2005/Atom}
$doc selectNodesNamespaces $ns
set titleList [$root selectNodes //xmlns:entry/xmlns:title]
set linkList [$root selectNodes {//xmlns:entry/xmlns:link[@rel='alternate']}]
set out [open $ofname w 0666]
foreach tnode $titleList lnode $linkList {
set ntitle [$tnode text]
set nlink [$lnode getAttribute href]
puts $out "<a href=\"$nlink\">$ntitle</a><br>"
}
close $out
}
if {$argc == 2} {
set url [lindex $argv 0]
set ofile [lindex $argv 1]
} else {
puts "Usage:"
puts "\ttclsh atom2html.tcl url filename"
exit
}
if {[catch {set data [get_atom $url]} err]} {
puts $err
} else {
parse $data $ofile
}