数据树清理器 · Data Tree Cleaner

递归清理数据树中的空值、无效数据和空白内容,可选是否移除空分支
📂 LK → Tree 📄 CleanTree.cs 🧹 数据清洗 🔄 右键菜单

📖 功能概述

输入一个树形数据结构,逐分支逐项进行清理过滤。对每一条数据依次执行三级检查:

  1. 空值检查— 剔除 null 引用
  2. 有效性检查— 调用 IsValid 属性,剔除失效或已销毁的对象
  3. 空白内容检查— 使用正则 ^\s*$ 匹配,剔除纯空白或空字符串

通过右键菜单可选择两种模式:

🧠 核心算法:三级过滤 + 分支保留策略

① 逐项过滤规则

对每个分支中的每一项 item:
├─ item == null?→ ❌ 跳过(空引用)
├─ item.IsValid == false?→ ❌ 跳过(失效对象)
├─ item.ToString() 匹配 ^\s*$?→ ❌ 跳过(纯空白)
└─ ✅ 保留此项

② 分支保留决策

清理后 cleanedBranch.Count:
├─ > 0 → ✅ 无条件保留该分支
├─ == 0 且模式为「清理空分支」→ ❌ 移除整个分支
└─ == 0 且模式为「保留空分支」→ ✅ 追加空分支(保留路径结构)

📥 输入参数

名称类型必填说明
数据树 (T) Generic 必需 需要清理的树形数据结构。支持任意 GH_Goo 派生类型(几何、数字、文本等)。

📤 输出参数

名称类型说明
清理后数据 (T) Generic 执行三级过滤后的数据树。空分支的保留与否取决于右键菜单选项。

🖱️ 右键菜单选项

选项索引说明
清理空分支0(默认)分支清理后如果为空,则删除该分支,简化最终树形结构
保留空分支1分支清理后即使为空,也保留路径结构,适合需要维持原树形骨架的场景

🎯 使用场景

⚠️ 注意事项:
  • ToString() 匹配空白——仅针对字符串类型的空白内容有效。数字 0 或布尔值 false 不会被当作空白过滤。
  • 如果输入树为空(无任何分支),输出同样为空树。
  • 「保留空分支」模式下输出的空分支不会包含任何数据元素,其路径仍然存在,可被后续的树形路径相关组件读取。

📋 组件信息

名称数据树清理器
英文名Data Tree Cleaner (CleanTree)
分类LK → Tree
基类RighrClickComponent
GUID31641AA3-DA4E-44D5-A3F2-149D598410B8