【发布时间】:2022-08-21 06:11:16
【问题描述】:
您能告诉我这些是否是将选择包装在新标签中并将标签内容解包到同一节点位置的父节点的正确方法吗?它们似乎适用于我的 HTML 内容,但想知道这是否是正确的方法。
此外,当子节点被替换时,被替换的子节点是从内存中释放还是应该被编码?
谢谢你。
proc wrap {path tag} {
foreach item [$::doc selectNodes $path] {
set wrapper [$::doc createElement $tag]
# This fails if $item has more than one child node.
# $wrapper appendFromList [[$item childNodes] asList]
foreach child [$item childNodes] {
$wrapper appendChild $child
}
[$item parentNode] replaceChild $wrapper $item
}
}
proc unwrap {path} {
foreach item [$::doc selectNodes $path] {
foreach child [$item childNodes] {
[$item parentNode] insertBefore $child $item
}
$item delete
}
}
-
我思考tDOM 会进行垃圾收集,前提是您不持有引用。
-
tDOM 要求您明确地
delete一个节点(就像您在unwrapproc 中所做的那样);replaceChild、removeChild将在内部维护至少一个引用,该引用被 tDOM 称为文档片段列表。