我正在尝试使用Quartz Composer创建一个持续集成构建散热器。
我整理了一个简单的XML文件来描述项目以及每个工作流程的最新成功:
<projects>
<project>
<title>Project A</title>
<workflows>
<workflow>
<title>Build 1.0</title>
<status>success</status>
</workflow>
<workflow>
<title>Build 2.0</title>
<status>success</status>
</workflow>
</workflows>
</project>
<project>
<title>Project B</title>
<workflows>
<workflow>
<title>Build 1.0</title>
<status>success</status>
</workflow>
</workflows>
</project>
</projects>
这显然会有更多的信息,但我只是想让基础工作暂时工作。我设置了一个合成,并使用XML Downloader从文件系统加载上述XML文件。
我遇到的问题是:当我在一个有多个子元素的元素上使用Structure Key Member补丁时,我会找回多个孩子,但是当我在一个只有一个孩子的元素上使用Structure Key Member时,我会回来单个孩子而不是1个项目的集合。
我在示例组合中说明了以下问题:
我做错了吗?这是预期的行为吗?为什么下链不会返回QCStructure?
答案 0 :(得分:2)
不幸的是,XML Downloader
补丁无法正确处理多个相邻的空元素。
一种可能的解决方法可能是重构XML以删除“项目”组,只需使“项目”成为每个“工作流程”的属性:
<workflows>
<workflow project="Project A">
<title>Build 1.0</title>
<status>success</status>
</workflow>
<workflow project="Project A">
<title>Build 2.0</title>
<status>success</status>
</workflow>
<workflow project="Project B">
<title>Build 1.0</title>
<status>success</status>
</workflow>
</workflows>
这会产生一个可用结果的结构。
(当XML Downloader
从XML构建结构时,属性等同于子标记,因此“project”可以是并且您将获得相同的结果。)