【发布时间】:2016-12-27 06:45:08
【问题描述】:
我使用 tcldom 制作了一个脚本:
package require utils
package require testrunscheduler
package require tdom
tla::TSConfig::init -schedulerContext "Reporting" -environment production
tla::TSDBFactory::getConnection db
set testCaseList [$db doSQL "SELECT root_name,suite_name,case_name FROM ics where test_type = 'tce' limit 1"]
set item [join $testCaseList ""]
set doc [dom createDocument testCases]
set root [$doc documentElement]
set subnode [$doc createElement testCase]
$root appendChild $subnode
foreach item $item {
set node [$doc createElement root]
$node appendChild [$doc createTextNode $item]
$subnode appendChild $node
}
我得到的输出是:
<testCases>
<testCase>
<root>SPB</root>
<root>subscriberServices</root>
<root>jmsServices</root>
</testCase>
</testCases>
但我希望输出是这样的:
<testCases>
<testCase>
<root>SPB</root>
<suite>subscriberServices</suite>
<case>jmsServices</case>
</testCase>
</testCases>
我为此使用了foreach,但它只用于root,我可能错过了,这个结构会自我迭代并随着用户从sql查询的输入而增长。
<testCases>
<testCase>
<root>demoRoot</root>
<suite>demoSuite</suite>
<case>demoCase</case>
<testCase>test_demo001</testCase>
</testCase>
<testCase>
<root>demoRoot</root>
<suite>demoSuite</suite>
<case>demoCase</case>
<testCase>test_demo002</testCase>
</testCase>
</testCases>
请帮助我获得这种输出,获得这种重复但具有一个结构的putput非常乏味。
【问题讨论】:
-
看看 tdom 包,它非常适合这类任务。 wiki上有教程,搜索tdom。
-
您查看的是哪个 wiki 页面?
-
Tdom 以另一种方式工作,即 XML 到原始或文本转换是我所理解的,还有另一个名为 xmlgen 的包,但该包未安装且不允许在我的测试环境中安装 @Peter
-
@vinay:tdom 实际上是双向的。我用它来解析 HTML/XML 和构建它。
-
@Peter Lewerin:是否有任何示例脚本可以帮助我获得您所说的使用 tdom 的输出?