В TCL ScriptРазбор XML-файлов в переменной
<server serverName='localhost'>
<port Number="6209" xmlLoc="path">
<pollerName>Nymex Feed Test1</pollerName>
<pollerName>Nymex Feed Test2</pollerName>
</port>
<port Number="6209" xmlLoc="path">
<pollerName>Nymex Feed Test1</pollerName>
<pollerName>Nymex Feed Test2</pollerName>
</port>
</server>
Я хочу прочитать выше атрибутов тегов XML и узловых значений в переменные.
Просьба сообщить.
Обновлено: Ниже приводится окончательное решение для чтения XML.
package require tdom
set xmlpath "test.xml"
set fd [open $xmlpath]
set xml [read $fd]
set doc [dom parse $xml]
set root [$doc documentElement]
foreach node [$root selectNodes "/server/port"] {
set num [$node getAttribute Number]
set loc [$node getAttribute xmlLoc]
puts $num
puts $loc
foreach nodeList [$node selectNodes ./pollerName/text()] {
puts [$nodeList nodeValue]
}
}
Позже:
я не могу использовать переменную в вложенном цикле для вызова функции, она не вызов функции во втором цикле. Пожалуйста посоветуйте CODE ::
proc remoteTelnet {serNumber pNumber xmlRoot} {
set body1 [concat $body "<tr><td>$pNumber and $polName</td> <td>Password not changed</td></tr>"]
puts "Poller:-- $polName"
}
foreach node [$root selectNodes "/server/port"] {
set num [$node getAttribute Number]
set loc [$node getAttribute xmlLoc]
foreach nodeList [$node selectNodes ./pollerName/text()] {
set poller [$nodeList nodeValue]
puts "Poller: $poller"
puts "Port: $num"
puts "Xml Path: $loc"
remoteTelnet $host $num $loc
}
}
Google предоставляет [TclXML] (http://tclxml.sourceforge.net/tclxml.html) и [эту вики] (http://wiki.tcl.tk/11020). Вы пробовали кого-нибудь из них, прежде чем задавать свой вопрос здесь? – Jerry
Я использовал пакет tdom TCL, я не знаю, что вы сказали? – Hmnshu