我有一个 xml 文件,其中包含以下几行:
<Integer Name="XMLVersionVal">
<Value>16</Value>
</Integer>
我想创建一个 tcl 脚本来查找参数 XMLVersionVal 的值,在本例中为“16”。
我已经制作了这个脚本(见下文),它工作正常,但我发现它丑陋而且太长。我想知道是否有更好的方法来做我想做的事。我基本上查看文件的每一行,找到 Name="XMLVersionVal" 的行,然后从下一行中删除 和 。
感谢您的帮助
set filePath "C:/tclWork/xml_file.xml"
if {[file exist $filePath]} {
set xmlFile [open $filePath r]
set file_content [read $xmlFile]
close $xmlFile
set xmlVerFound 0
foreach {line} $file_content {
if {[regexp {1} $xmlVerFound]} {
regsub {<Value>} $line {} line
regsub {</Value>} $line {} line
set xmlVer $line
}
if {[string first {Name="XMLVersionVal"} $line] != -1} {
set xmlVerFound 1
} else {
set xmlVerFound 0
}
}
}
为了简单起见,我建议如下:
## just for testing
set data {Name="XMLVersionVal"> <Value>16</Value>}
regexp -nocase {Name[\r\n\f\t\s]*=[\r\n\f\t\s]*"XMLVersionVal"[\r\n\f\t\s]*>[\r\n\f\t\s]*<Value>(.*)</Value>} $data dummy result
puts $result ;# prints 16
而
[\r\n\f\t\s]
的序列匹配任意白色字符=回车符、换行符、换页符、制表符、空格;