最近用DXL编写了一些DOORS的脚本,网上关于DXL的资料比较少,因此把自己的经历分享出来,给需要的朋友作为参考。下面是介绍如何输出DOORS database中的目录树结构(包括Folder、Project、Module),并拼接成XML字符串输出。
问题的主要思路是:先在database中用for循环遍历,得到database中的所有内容,筛选出第一级的内容(Folder和Project),然后对第一级进行递归遍历即可得到整个目录树。但这个时候比较奇怪的是,第一级如果是Folder,遍历结果中将没有这个值。而在database的遍历方法中又没有直接针对Folder的方法。
于是输出结果中并没有第一级的Folder,这样我们想要获取第一级的内容就变得很困难。这里我采用的是从下向上搜索,利用getparentFolder方法得到database中每个节点的上层目录,如果是/,则为一级目录。注意,这里要把类型设置为Folder才能“兼容”Folder和Project两种类型,从而完成搜索。最后,还可以对向上搜索的过程进行优化,在搜索的过程中将已经检索过但不是一级目录的节点放入数组中,以后每次搜索时先在数组中查找一下,这样可以避免很多不必要的搜索,提高效率。
//输出database目录树,拼接成XML字符串输出
string str = ""
//优化
Array arr = create(100,1)
bool isExit(Array a,string s,int index)
{
int i
for(i = 0;i<index;