我有这个XML
来自命令行输出的示例模板,
<config xmlns="http://tail-f.com/ns/config/1.0">
<random xmlns="http://random.com/ns/random/config">
<junk-id>1</junk-id>
<junk-ip-address>1.2.2.3</junk-ip-address>
<junk-state>success</junk-state>
<junk-rcvd>158558</junk-rcvd>
<junk-sent>158520</junk-sent>
<foobar>
<id1>1</id1>
<id2>1</id2>
</foobar>
</random>
</config>
junk-state
我需要从中提取 的值XML
。
我制作了一个.tcl
脚本来运行这个变量并使用单引号仅用于测试目的,如下所示,
以下是我的脚本的内容。我只是尝试在节点周围循环,但没有成功。
set XML "<config xmlns='http://tail-f.com/ns/config/1.0'>
<random xmlns='http://random.com/ns/random/config'>
<junk-id>1</junk-id>
<junk-ip-address>1.2.2.3</junk-ip-address>
<junk-state>success</junk-state>
<junk-rcvd>158558</junk-rcvd>
<junk-sent>158520</junk-sent>
<foobar>
<id1>1</id1>
<id2>1</id2>
</foobar>
</random>
</config>"
set doc [dom parse $XML]
set root [$doc documentElement]
set mynode [$root selectNodes "/config/random" ]
foreach node $mynode{
set temp1 [$node text]
echo "temp1 - $temp1"
}
上面的脚本不产生任何输出,
还尝试了xpath
如下直接表达式并打印文本
set node [$root selectNodes /config/random/junk-state/text()]
puts [$node nodeValue]
puts [$node data
这会产生错误
invalid command name ""
while executing
"$node nodeValue"
invoked from within
"puts [$node nodeValue]"
(file "temp.tcl" line 41)
我在这里做错了什么。想知道如何使用/修改我的xpath
表达方式,因为我觉得这样更整洁。
$ tclsh
% puts $tcl_version
8.5
% package require tdom
0.8.3