# cache-xml-convert **Repository Path**: Oagil/cache-xml-convert ## Basic Information - **Project Name**: cache-xml-convert - **Description**: Caché/IRIS 源码(cls/csp/js/csr/css)与 Studio 导出 XML 双向转换 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-05 - **Last Updated**: 2026-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Caché XML 转换 (cache-xml-convert) Caché / IRIS 源代码与 Studio 导出 XML 的双向转换 VSCode 插件。完全离线,不依赖任何 AI 服务。 右键即可把源码导出为可导入服务器的 XML,或把导出 XML 还原为源码。 ## 功能特性 - **支持源码类型**:`.cls` / `.mac` / `.inc` / `.csp` / `.js` / `.csr` / `.css` - **目标数据库版本**:2010 / 2016 / 2023 / 2025(默认 2016,2016 版可导入 2023/2016/2010;2025 与 2023 导出格式一致仅 zv 不同) - **支持还原工程xml**:还原按工程导出的 XML(含 `` 节点)时,自动比对工程文件列表与 XML 实际包含的文件——一致不提示,有差异输出提示 - **批量操作**:支持多选文件与文件夹递归 - **自动推导**:类名从 `Class` 声明提取;CSP/JS/CSR/CSS 的 application 从路径中 `src` 与 `web` 目录段推导 - **还原统一**:源码统一输出为 UTF-8 + LF;双向转换经过逐字节比对的冒烟测试验证 ## 安装 1. 从 [dist/cache-xml-convert-0.0.18.vsix](https://gitee.com/Oagil/cache-xml-convert/raw/master/dist/cache-xml-convert-0.0.18.vsix) 下载最新 vsix 2. 安装(任选其一): - VSCode 扩展面板右上角 `...` → **从 VSIX 安装...** → 选择下载的文件 - 命令行:`code --install-extension cache-xml-convert-0.0.18.vsix` ## 使用方法 在资源管理器或编辑器中右键: | 文件类型 | 菜单项 | 输出位置 | |---|---|---| | `.cls` / `.mac` / `.inc` / `.csp` / `.js` / `.csr` / `.css` | Caché: 源码导出为 XML | 工作区 `导出/` 目录 | | `.xml` | Caché: XML 还原为源码 | 工作区 `src/` 目录 | - 输出文件名与 Studio 服务器导出一致(如 `PHA.DTC.COM.Print.xml`、`imedical_web_csp_pha.tracecode.v2.main.xml`) - `.inc` 导出文件名点换 `_` 并带 `_inc` 标识(如 `PHA.COM.Base` → `PHA_COM_Base_inc.xml`),与同名 cls 的 XML 隔离,防止相互覆盖 - `.mac` 导出文件名带 `.mac` 后缀(如 `BSP.SMP.ZSTU` → `BSP.SMP.ZSTU.mac.xml`,与服务器导出一致),与同名 cls 的 XML 天然不冲突 - 转换结果在输出面板(Caché XML 转换)中逐条显示:`[OK]` 成功、`[失败]` 错误、`[提示]` 工程比对差异 ## 设置项 | 设置 | 默认值 | 说明 | |---|---|---| | `cache-xml-convert.version` | `2016` | 生成 XML 的目标数据库版本(2016 兼容版可导入 2023/2016/2010) | | `cache-xml-convert.outDir` | `导出` | XML 输出目录(相对工作区根,也可填绝对路径) | | `cache-xml-convert.srcRoot` | `src` | 后台 `.cls`/`.inc`/`.mac` 还原源码的目标根目录 | | `cache-xml-convert.webSrcRoot` | `src` | 前端 `csp/js/csr/css` 还原源码的目标根目录 | | `cache-xml-convert.app` | 空 | CSP/JS/CSR/CSS 的 application(如 `/imedical/web/`),留空则从路径中的 `src` 与 `web` 目录段自动推导 | 前后端还原根目录分开维护:工程导出等混合 XML 还原时,`.cls` 写入 `srcRoot`,`csp/js/csr/css` 写入 `webSrcRoot`;两项都默认 `src`,不改则行为与旧版一致。 ## 版本记录 | 版本 | 说明 | |---|---| | 0.0.18 | 修复 FormalSpec 方法参数默认值为表达式(如 `[]`、`{}`、`$h`)还原源码时未用 `{}` 包裹的问题(`=[]` → `= {[]}`);反向 src2xml 自动去掉外层 `{}` 保持 XML 格式一致 | | 0.0.17 (2026-10-09) | 新增二进制型 Web 文件(含 XML 非法控制字符,如 SheetJS 的 xlsx.full.min.js)`` 双向转换支持:src2xml 自动检测并切换 Base64 输出(76 字符折行),xml2src 识别 `` 按解码后原始字节还原 | | 0.0.17 | 修复方法等类成员上的 `0` 误还原为 `Not ProcedureBlock` 的问题(类成员应写 `ProcedureBlock = 0`,仅类头用 `ProcedureBlock` / `Not ProcedureBlock` 形式) | | 0.0.16 | 代码与 0.0.15 一致,仅更新 README(补 0.0.15 版本记录与安装链接,同步 Marketplace 页面文档) | | 0.0.15 | 新增 `Trigger` 触发器、`XData`、`Query` 的 SQL 体(``)、`Collection` 集合属性(`list Of`)双向转换;`` 内容按注释类型规范化(单行/多行 `/* */` 与 `//` 行注释规则,经 2016 实机导出验证);对齐真实导出的排序细节:Storage(`Description` 最前、补 `SqlTableNumber`)、SQLMap(`BlockCount` 紧跟 `PopulationType`)、Index/Method/Query 子元素顺序、类头 `Inheritance` 位置;修复 Index `On` 子句 `:Exact` 排序后缀与 `(ELEMENTS)` 集合下标丢失、`SqlComputeOnChange` 括号值丢失、`Parameter` Default 前导/尾随空格丢失、显式 `CodeMode=code` 被误过滤、方法块扫描未识别块注释导致的未闭合误报、无类型属性(`Property result;`)解析失败 | | 0.0.14 | 支持 `Relationship` 声明双向转换(此前报"无法识别的源码行");导出时 Relationship 属性自动附带 `1` 标记(缺失会导致导入后关系丢失);修复 `InitialExpression` 表达式还原丢失 `{}`(`0` 等数字字面量保持无括号);修正属性 ``/`0` 的错误合成(真实服务器各版本导出均不带,仅 Relationship 属性带 `1`) | | 0.0.13 | 支持类体中方法外的 `//` 与 `/* */` 注释转 `` 节点(此前报"无法识别的源码行");修复 `Output` 参数在 XML 中误转为 `&` 前缀(正确为 `*`,如 `*dataList`);空方法体导出时省略 ``(与服务器导出一致) | | 0.0.12 | 新增 2025 版本导出(Linux IRIS 2025.1,与 2023 格式一致仅 zv 不同);移除 2023-2016 兼容版;修复 Storage 排序缺 `IndexLocation` 的问题 | | 0.0.11 | 新增 `.mac` 例程双向转换(导出带 `languagemode="0"`、文件名 `名称.mac.xml`;还原到后台 srcRoot,`ROUTINE` 头行自动剥除/补回) | | 0.0.10 | 新增 EOL 设置:导出 XML 行尾跟随目标服务器 OS(Windows=crlf 默认 / Linux=lf),修正"inc 固定 LF"的错误归因(实际由导出服务器 OS 决定) | | 0.0.9 | 支持 ``(老版本 IRIS 宽字符例程导出,Base64/UTF-16LE 自动解码还原) | | 0.0.8 | 还原时 Src Root / Web Src Root 目录不存在则自动创建,不再报错 | | 0.0.7 | 设置项排序:Out Dir → Src Root → Web Src Root → App → Version | | 0.0.6 | 新增 `.inc` include 双向转换,导出文件名带 `_inc` 标识防止与同名 cls 覆盖 | | 0.0.5 | 还原源码根目录区分前端(`webSrcRoot`)与后台(`srcRoot`),均默认 `src` | | 0.0.4 | 工程导出:解析 `` 节点,比对工程列表与实际文件并提示差异 | | 0.0.3 | 新增 `.css` 源码双向转换 | | 0.0.2 | 新增 `.csr` 源码双向转换 | | 0.0.1 | 初版:`.cls` / `.csp` / `.js` 与 Studio 导出 XML 双向转换 | ## License MIT