你的标题说 tcl dom 但你的问题说 tdom 并且它被标记为 tdom 所以我会做出多数决定并给出一个 tdom 答案 - 它们是不同的包!
首先,您需要使用解析原始 xml
# Assumes that xmlText holds your raw XML
dom parse $xmlText doc
现在获取 tc_name 节点的列表
set nodes [$doc selectNodes {Testcases/Testcase[@tc_name]}
现在循环访问那些访问参数节点的节点
foreach node $nodes {
set params [$node selectNodes Parameters]
foreach param $params {
# Do some stuff
}
}
完成后不要忘记删除文档。(请注意,如果您在 proc 中执行此操作,则当 proc 退出时,这将自动发生。)
$doc delete
我不完全确定你最终想要做什么,所以这里有一些代码来输出每个参数,它的 tc_name,每行一个:
dom parse {<Testcases>
<Testcase tc_name="tc1">
<Parameters>
<Input_Arguments>tc1_arg1</Input_Arguments>
<Input_Arguments>tc2_arg2</Input_Arguments>
</Parameters>
</Testcase>
<Testcase tc_name="tc2">
<Parameters>
<Input_Arguments>tc2_arg1</Input_Arguments>
<Input_Arguments>tc2_arg2</Input_Arguments>
</Parameters>
</Testcase>
</Testcases>
} doc
foreach testcase [$doc selectNodes Testcases/Testcase] {
set name [$testcase getAttribute tc_name]
foreach arg [$testcase selectNodes Parameters/Input_Arguments] {
foreach child [$arg childNodes] {
puts stdout $name\ [$child nodeValue]
}
}
}
$doc delete; # Tidy away the parsed document
我希望这可以为您提供足够的指示,以便您能够完成任务