当前位置: 首页 > news >正文

批量格式化XML与JSON文件小工具

JSON/XML 格式化工具 (WPF, .NET 8)

虽然网络上有很多在线的格式化工具,但有时候依然不够方便,这是一款轻量级的 Windows 桌面工具,用于批量/拖拽格式化 XML 与 JSON 文件,支持目录递归、严格校验、编码保留、原子替换/回收站替换、并发处理,以及会话记忆与启动自动处理。

在这里插入图片描述下面是格式化后的结果:
在这里插入图片描述在这里插入图片描述

功能特性

  • 拖拽处理:支持拖拽文件或目录到主窗口,目录会递归展开。
  • 快速内容判定:首个非空白字符为 < 视为 XML,{/[ 视为 JSON,其他跳过;可开启“强制尝试解析”。
  • 严格校验
    • XML:禁用 DTD/外部实体,防注入,合法性检测后再格式化。
    • JSON:严格标准 JSON(不允许注释、尾随逗号)。
  • 格式化与编码
    • XML 使用 XmlWriter,保留/推断编码与 XML 声明;统一 CRLF 行尾。
    • JSON 使用 Utf8JsonWriter,先 2 空格缩进,再根据设置转换为 4 空格或 Tab;统一 CRLF 行尾。
  • 文件替换策略(稳健)
    1. 首选:将原文件移入回收站(如失败则硬删除),再将临时文件重命名为原名。
    2. 回退:File.ReplaceCopy 覆盖,支持 .bak 备份。
  • 并发处理:默认 4 并发,可在设置中调整。
  • 体积/过滤:超过 100MB 的文件自动跳过。
  • 会话记忆
    • 记住拖拽的最近路径列表(LastPaths)。
    • 下次启动可自动加载并处理(可通过配置开关)。
  • 批量确认:展开后文件数超过 5 个时弹出确认对话框(支持本会话记忆)。
  • 应用图标:内置程序化自绘多分辨率 ICO,任务栏/标题栏显示一致。

使用方法

  1. 运行 publish/JsonXmlFormatter.exe(需要 .NET 8 Desktop Runtime)。
  2. 将文件或目录拖拽进窗口。
  3. 如展开后的文件总数 > 5,会弹出确认提示。
  4. 处理完成后,列表显示每个文件的“成功/跳过/失败”状态与说明。
  5. 可勾选“只看失败/跳过”,或点击“清空列表”。
  6. 点击“设置”可修改缩进风格、并发数、是否备份 .bak、强制尝试解析、是否记住批量选择等。

配置文件(与 EXE 同名,同目录)

应用启动时会在 EXE 同目录生成或读取与 EXE 同名的 JSON 配置,例如:

{"CenterOnStartup": true,"AutoProcessOnStartup": true,"LastPaths": ["C:\\path\\to\\folder","C:\\path\\to\\file.json"]
}
  • CenterOnStartup:启动时窗口居中(支持多显示器/多 DPI)。
  • AutoProcessOnStartup:启动后自动加载并处理 LastPaths
  • LastPaths:上一次拖拽的文件或目录列表(自动去重)。

注意:本配置不兼容早期版本的配置方式(已改为“与 EXE 同名的 JSON”)。

窗口与居中策略

  • 初始尺寸:Width=900Height=520,最小尺寸 MinWidth=800MinHeight=450
  • 启动直接居中:在 SourceInitialized 阶段按当前鼠标所在屏幕工作区 + DPI 缩放计算位置,避免先显示再移动的闪动。

列表与自动处理

  • 列表禁止重复:拖拽相同文件、多次拖拽或“上次列表”自动加载时,均会去重且不重复入队。
  • 自动处理:若 AutoProcessOnStartup=trueLastPaths 非空,启动后会自动处理;若展开 > 5 仍会弹出确认。

注意事项

  • 若文件被“只读”保护或正被其他进程占用,可能导致覆盖失败;程序会尝试移除只读属性与多次重试。
  • 单文件发布模式下,应用在发布目录生成 JsonXmlFormatter.json 配置。不要放在系统受限路径下以免权限问题。
  • JSON/XML 解析严格,请确保文件内容合法。对于非标准 JSON(带注释/尾随逗号)会提示失败。
  • 拖拽目录时,超过 100MB 的文件会被跳过处理。

发布方式

  • 框架依赖的单文件(win-x64):dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true --self-contained false -o ./publish
  • 可执行文件位置:publish/JsonXmlFormatter.exe

技术栈

  • .NET 8.0 WPF(C#),System.Text.JsonSystem.Xml
  • 并发:SemaphoreSlim
  • 图标生成:独立 JsonXmlFormatter.IconGen 项目(SkiaSharp 自绘多分辨率 ICO)

变更要点(近期)

  • 配置迁移:改为“与 EXE 同名的 JSON”,新增 CenterOnStartupAutoProcessOnStartupLastPaths
  • 启动居中:在 SourceInitialized 即时居中。
  • 替换策略:新增“回收站删除 + 重命名临时文件”,并保留 Replace/Copy 作为回退方案。
  • 列表去重:防止重复入队与重复处理。

常见问题

  • 提示“无法访问文件/权限不足”:
    • 可能是目标只读、被占用或杀毒软件拦截;请尝试关闭相关程序或将发布目录加入白名单。
    • 程序会自动重试和回退。若仍失败,请提供“说明”列的完整错误文本。
  • 图标/标题栏不显示:请确认 Assets/app.ico 在发布目录存在(已经配置为总是复制)。

如需新增功能(托盘、右键菜单、更多格式化选项、多语言等),或需要便携版/安装包,请提出需求。

http://www.dtcms.com/a/597693.html

相关文章:

  • TensorFlow深度学习实战(41)——TensorFlow生态系统
  • 网站空格 教程宁波龙山建设有限公司网站
  • 4-ARM-PEG-COOH(2),多功能羧基PEG的结构特性与反应特点
  • 东昌府区网站建设公司铜川网站建设公司电话
  • 大模型如何处理不同格式的文档?
  • GCPC总决赛(牛客)
  • 重庆网站优化指导wordpress esc html
  • Java-168 Neo4j CQL 实战:WHERE、DELETE/DETACH、SET、排序与分页
  • 双算法 SSL 证书技术白皮书:SM2+RSA/ECC 混合加密机制深度解析
  • 找别人做的网站怎样修改html代码颜色
  • FPGA教程系列-Vivado IP核FIFO核
  • 大模型-详解 Vision Transformer (ViT) (3)
  • 酒店网站建设的重要性户外家具技术支持东莞网站建设
  • 4G+5G RF静态射频共享的介绍
  • 怎么网站改版想代理个网站建设平台
  • 贝叶斯共识聚类(BCC)
  • Mybatis操作数据库(入门)
  • 高阅读量博文:抓住“痛点”与“热点”/ 高下载量资源:提供“成品”与“利器”
  • css之flex属性
  • 网站建设时间计划广州高端网站设计公司排名
  • 怎么用自己的网站做邮箱wordpress 设计主题
  • 【LlamaIndex】LlamaIndex与Milvus实现知识库
  • 如何查看网站是谁建设的茂名住房和城乡建设厅网站
  • 从图像导数到边缘检测:探索Sobel与Scharr算子的原理与实践
  • vue路由路径加上自动退出登录
  • 推图制作网站无法连接到wordpress
  • Java面试题2:Java线程池原理
  • 小企业网站源码wordpress主题放在那个文件夹
  • HarmonyOS动画性能提升:renderGroup缓存与属性动画优化
  • 玉器企业网站源码wordpress外观小工具