我正在使用tDom來遍歷一些XML並提取每個元素的文本()。TCL tDom空XML標記
set xml {
<systems>
<object>
<type>Hardware</type>
<name>Server Name</name>
<attributes>
<vendor></vendor>
</attributes>
</object>
<object>
<type>Hardware</type>
<name>Server Two Name</name>
<attributes>
<vendor></vendor>
</attributes>
</object>
</systems>
};
set doc [dom parse $xml]
set root [$doc documentElement]
set nodeList [$root selectNodes /systems/object]
foreach node $nodeList {
set nType [$node selectNodes type/text()]
set nName [$node selectNodes name/text()]
set nVendor [$node selectNodes attributes/vendor/text()]
# Etc...
puts "Type: "
puts [$nType data]
# Etc ..
puts [$nVendor data]
}
但是,當它試圖打印出供應商,這是空的,它會導致錯誤無效命令名稱「」。我怎麼能忽略這一點,只需將$ nVendor設置爲空字符串?
如果你寫XPath的方式稍有不同,你可以保證結果列表中只有0或1的值,並使用'llength'來測試,這是一個簡單的操作。 – 2010-04-15 14:15:54