【问题标题】:add single line comment in tcl tdom在 tcl tdom 中添加单行注释
【发布时间】:2016-02-17 11:35:10
【问题描述】:

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

例如

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

【问题讨论】:

    标签: tcl tdom


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多