在tcl中打印特定的xml节点值

时间:2013-07-16 08:54:30

标签: tcl

我正在尝试打印节点值,但它什么都不打印。这是代码:

package require dom;
set XML "
    <top number='1'>
        <a>Name</a>
        <b>589</b>
        <email>name@example.com</email>
        <website/>
        <parts>
            <widget sku='XYZ123' />
            <widget sku='ABC789' />
        </parts>
    </top>
"
set doc [::dom::parse $XML]
set root [$doc cget -documentElement]
set node [$root cget -firstChild]
set node [$root cget -nextSibling]
set node [$root cget -firstChild]
puts "[$node cget -nodeValue]"

1 个答案:

答案 0 :(得分:1)

根据TclDOM documentation,您应该使用stringValue方法获取节点的字符串内容。

puts [$node stringValue]

您可能应该使用selectNode方法选择要打印的元素,而不是手动执行此操作; XPath比直接DOM更简单:

set doc [dom::parse $XML]
set node [[$doc cget -documentElement] selectNode "/top/b"]
puts [$node stringValue]