看下解析代码
package re xml
proc handle {myVar1 myVar2 obj attr args} {
puts "myvar1: $myVar1"
puts "myvar2: $myVar2"
# 每个xml节点的名字
puts "obj: $obj"
# 每个xml节点的属性组成的列表 {属性名 属性值 属性名 属性值 ...}
puts "attr: $attr"
# 额外的参数
puts "args: $args"
}
set parser [::xml::parser -elementstartcommand [list handle VAR1 VAR2]]
set topFileId [open "a.top" r]
$parser parse [read $topFileId]
下面是xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<Topology topname="">
<Devices name="tester1" type="ixia" model="" extension="$tester1"></Devices>
<Devices name="dut1" type="" model="" extension="$dut1"></Devices>
<Connections portlist="tester1:port1 dut1:port1" type="eth" intf="rut"></Connections>
<TopPic>
+---------+ +---------+
| tester1 | | dut1 |
| | | |
| ixia1|-------------|RUT1 |
| | | |
| | | |
| | | |
+---------+ +---------+
</TopPic>
<PortGroup>
<Var name="portGroup(deviceList)">{tester1 dut1}</Var>
<Var name="portGroup(dut1,testCasePtList)">[list "RUT1"]</Var>
<Var name="portGroup(dut1,RUT1,portNum)">1</Var>
<Var name="portGroup(dut1,RUT1,linkList)">[list "tester1"]</Var>
<Var name="portGroup(dut1,RUT1,ipAddrList)"></Var>
<Var name="portGroup(dut1,RUT1,ipv6AddrList)"></Var>
</PortGroup>
</Topology>