在tcl tdom

时间:2016-02-17 11:35:11

标签: tcl tdom

如何使用tcl tdom添加单行注释或多行注释?

例如

<book>
<!-- book 1 price -->
<name> abc </name>
<price> 150 </price>
</book>

1 个答案:

答案 0 :(得分:1)

这取决于你在做什么。您可以通过创建注释节点并将其插入DOM树,或通过从列表描述符插入或通过从脚本插入来添加注释。

package require tdom

set doc [dom createDocument book]
set root [$doc documentElement]
$root appendChild [$doc createComment "book 1 price"]

如果您已有文档并且只想在顶部添加评论,则可以执行以下操作:

set doc [dom parse ...]
set root [$doc documentElement]
$root insertBefore [$doc createComment "book 1 price"] [$root firstChild]

如果您没有文档并且还需要创建nameprice元素,则逐个创建节点会变得过于繁琐。相反,人们可以这样做:

set doc [dom createDocument book]
set root [$doc documentElement]
$root appendFromList {#comment "book 1 price"}
$root appendFromList {name {} {{#text abc}}}
$root appendFromList {price {} {{#text 150}}}

如果要从数据结构填充文档并可能添加一些逻辑,您可能希望使用appendFromScript,这意味着您需要先定义一些节点命令。

dom createNodeCmd element book
dom createNodeCmd element name
dom createNodeCmd element a
dom createNodeCmd element price
dom createNodeCmd comment c
dom createNodeCmd text t

set doc [dom createDocument books]
set root [$doc documentElement]
set n 0
foreach {nm pr} {
    abc 150
    def 120
    ghi 200
} {
    incr n
    $root appendFromScript {book id $n {
        c "book $n price"
        name {a href "http://what/ever?book=$n" {t $nm}}
        price {t $pr}
    }}
}

(注意:在文档中,createNodeCmd的类型参数应该是elementNodecommentNodetextNode等.IME它可以缩写为一个或两个字母,例如e / t / co。抛弃Node部分似乎是一种清晰的妥协。)

文档:foreachincrpackagesettDOM