如何通过DXL遍历Fruits项目文件夹,以只读模式打开Apples模块?
解决DXL遍历项目文件夹并打开指定模块的问题
你的代码无法运行的核心问题是直接对字符串PROJECT_NAME进行遍历,而DXL需要通过Project对象和Folder对象来遍历项目结构,同时还要处理嵌套文件夹的情况(比如Fruits→ColorRed→Apples这种多层结构)。
以下是可以实现需求的DXL代码,支持递归遍历项目下所有嵌套文件夹,找到目标模块后以只读模式打开:
string MODULE_NAME = "Apples" string PROJECT_NAME = "Fruits" // 递归遍历文件夹及其子文件夹,查找目标模块 void findAndOpenModule(Folder currentFolder) { // 遍历当前文件夹下的所有模块 Module m for m in currentFolder do { if (name(m) == MODULE_NAME) { // 以只读模式打开找到的模块 Module openedMod = read(fullName(m)) print "成功打开模块: " fullName(m) "\n" return // 找到后停止遍历 } } // 递归遍历当前文件夹下的子文件夹 Folder subFolder for subFolder in currentFolder do { findAndOpenModule(subFolder) } } // 主逻辑:获取目标项目并启动遍历 Project targetProject = find(PROJECT_NAME) if (targetProject != null) { // 遍历项目下的所有根文件夹 Folder rootFolder for rootFolder in targetProject do { findAndOpenModule(rootFolder) } } else { print "未找到项目: " PROJECT_NAME "\n" }
关键代码说明:
Project targetProject = find(PROJECT_NAME):通过项目名称获取对应的Project对象,这是遍历项目结构的起点- 递归函数
findAndOpenModule:先遍历当前文件夹下的所有模块,匹配到目标名称就打开;再递归遍历子文件夹,确保不会遗漏嵌套层级里的模块 fullName(m):获取模块的完整路径,避免同名模块冲突,同时作为read()的参数正确打开模块name(m):获取模块的短名称(即你要匹配的"Apples")
内容的提问来源于stack exchange,提问作者NickHalden
相关产品推荐
相关产品推荐

