# K3CloudXMLDataParsing **Repository Path**: jackywx/K3CloudXMLDataParsing ## Basic Information - **Project Name**: K3CloudXMLDataParsing - **Description**: 元数据解析构建数据字典 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-26 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # K3CloudXMLDataParsing 金蝶云星空(K3 Cloud)元数据解析工具 — 从 `T_META_OBJECTTYPE` 表中提取 XML 元数据,解析 Entity、Field、SplitTable 信息,并通过继承链和扩展链自动合并,写入自定义数据表供查询使用。 ## 功能特性 - **元数据提取**:从金蝶云星空内核 XML 中解析实体(Entity)、字段(Field)、拆分表(SplitTable)信息 - **继承链合并**:沿 `FINHERITPATH` 解析继承关系,按根→当前顺序逐层合并,子级非空属性覆盖父级 - **扩展链合并**:递归处理 `FDEVTYPE=2` 的扩展对象,将扩展属性合并到基础对象 - **增量处理**:支持 `action=remove` 删除和 `action=edit` 覆盖的增量合并逻辑 - **批量处理**:按批次加载 XML 并批量写入数据库,使用独立事务逐批提交 - **树形报表**:提供树形账表服务插件,按子系统/模块分类浏览元数据 - **单元格点击**:双击报表行可展开查看该实体的字段明细 ## 项目结构 ``` K3CloudXMLDataParsing/ ├── K3MetadataQueryBill.cs # 树形账表单插件(前端交互) ├── K3MetadataQueryRptTree.cs # 树形账表服务插件(数据查询) ├── MetadataResult.cs # 元数据提取结果、上下文、提取器 ├── EntityInfo.cs # 实体信息模型与 XML 解析 ├── FieldInfo.cs # 字段信息模型与 XML 解析 ├── SplitTableInfo.cs # 拆分表信息模型与 XML 解析 ├── DbHelper.cs # 数据库查询辅助类 ├── SqlGenerator.cs # SQL 写入器(批量 INSERT) ├── K3Helper.cs # 公共工具类(日志、SQL 转义) └── Properties/ └── AssemblyInfo.cs ``` ## 运行环境 - 金蝶云星空 V8.0+ - .NET Framework 4.7.2 - SQL Server ## 安装部署 1. 使用 Visual Studio 打开 `K3CloudXMLDataParsing.slnx` 2. 确保金蝶云星空开发环境已安装,DLL 引用路径指向 `C:\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\` 3. 编译项目,输出 DLL 到金蝶云星空 WebSite 的 bin 目录 4. 在金蝶云星空 BOS IDE 中注册插件: - **表单插件**:`K3MetadataQueryBill`(`CONOR_CEL_TEST01` 命名空间) - **服务插件**:`K3MetadataQueryRptTree`(`CONOR_CEL_TEST01` 命名空间) ## 使用说明 ### 元数据提取 点击工具栏按钮触发 `BarItemClick`,程序将: 1. 加载所有 `FMODELTYPEID IN (400, 100)` 且 `FDEVTYPE < 2` 的元数据对象 2. 为每个对象构建继承链 + 扩展链 3. 批量加载 XML 并解析合并 4. 将结果写入 `T_FORM`、`T_ENTITY`、`T_ENTITYSPLIT`、`T_FIELD` 四张自定义表 ### 树形浏览 服务插件自动构建三级树形结构: - **一级**:顶级分类(`T_META_TOPCLASS`) - **二级**:子系统(`T_META_SUBSYSTEM`) - **三级**:具体对象(`T_META_OBJECTTYPE`,仅 `FMODELTYPEID IN (100, 400)` 且 `FDEVTYPE < 2`) ### 字段明细 双击报表行可查看该实体的字段列表,包括字段标识、名称、数据库列名、属性名、字段类型、拆分表后缀等信息。 ## 自定义数据表结构 | 表名 | 说明 | |------|------| | `T_FORM` | 表单信息(FID, FFORMIDENTIFIER, FNAME, FMODELTYPEID, FSUBSYSTEMID, FVERSION) | | `T_ENTITY` | 实体信息(FID, FFORMID, FKey, FEntryName, FName, FTableName, FEntryPkFieldName, FElementType) | | `T_ENTITYSPLIT` | 拆分表信息(FID, FFORMID, FENTITYID, FSUFFIX, FDESCRIPTION) | | `T_FIELD` | 字段信息(FID, FFORMID, FENTITYID, FENTITYSPLITID, FKey, FName, FFieldName, FPropertyName, FElementType) | ## License [MIT](LICENSE)