如何使用 tcl tdom 添加单行注释或多行注释?
例如
<book>
<!-- book 1 price -->
<name> abc </name>
<price> 150 </price>
</book>
这取决于你在做什么。您可以通过创建注释节点并将其插入 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]
如果您没有文档并且还需要创建name
andprice
元素,那么逐个创建节点变得过于繁琐。相反,可以这样做:
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}
}}
}
(注意:在文档中,type 参数createNodeCmd
应该是elementNode
, commentNode
,textNode
等。IME 它可以缩写为一个或两个字母,例如e
/ t
/ co
。省略Node
部分似乎是一个清晰的折衷方案。)