Tcl setAttribute方法..如何仅更新xml文件中的特定行

Tcl setAttribute方法..如何仅更新xml文件中的特定行,tcl,tdom,Tcl,Tdom,一般情况下,该节点中不存在status属性…因此我将其设置为..以了解 这是更新还是不更新我用getAttribute检查了..所以输出来了。。 但该属性在.xml文件中不可见。。 我错过的地方…? (或) 是否有最好的方法仅使用tdom方法更新.xml文件中的特定行 我成功地创建了临时文件,这是一个传统的过程。。 但我只想使用tdom解析器方法更新行。我认为,问题在于,tdom不会自动将您对文档对象模型所做的更改反映回文件中。相反,它的模型基于文件内容的断开连接的副本;要保持更改,必须重新序列

一般情况下,该节点中不存在status属性…因此我将其设置为..以了解 这是更新还是不更新我用getAttribute检查了..所以输出来了。。 但该属性在.xml文件中不可见。。 我错过的地方…?
(或)
是否有最好的方法仅使用tdom方法更新.xml文件中的特定行 我成功地创建了临时文件,这是一个传统的过程。。
但我只想使用tdom解析器方法更新行。

我认为,问题在于,tdom不会自动将您对文档对象模型所做的更改反映回文件中。相反,它的模型基于文件内容的断开连接的副本;要保持更改,必须重新序列化并保存它

你可以这样做:

$intf setAttribute status "Shipped to Customer"
set status [$intf getAttribute status]
puts $status

就这么简单。(您需要知道它是XML还是HTML;这两种情况下的序列化规则略有不同。)

您对“文档”所做的更改是否没有反映回文件中?
# Save to a temporary file, just in case things go wrong...
set f [open $filename.tmp "w"]
$doc asXML -channel $f;   # Or the asHTML method if it's HTML to be saved
close $f

# Now do the atomic replace
file rename -force $filename.tmp $filename