桌面应用开发工具【免费下载链接】XmlNotepadXML Notepad provides a simple intuitive User Interface for browsing and editing XML documents.项目地址https://gitcode.com/gh_mirrors/xm/XmlNotepad点击查看免费下载本文以 XML Notepad 的 Options 选项对话框docs/help/options.md为主线系统讲解其从视图菜单入口到各配置分组的完整使用指南并结合 FormOptions.cs、Settings.cs 等源码与 XmlNotepad.template.settings 模板文件剖析每一项设置的默认值、取值范围与底层作用机制。读完本文你将能够熟练配置 XML Notepad 的主题与字体、格式化与校验行为、自动更新策略并能通过设置文件在团队中批量预置统一的工作环境。入口与整体结构Options 对话框通过View 菜单 → Options...打开menus.md其底层实现位于 FormOptions.cs。从源码看该对话框基于 WinForms 的PropertyGrid构建所有可配置项由FormOptions.UserSettings类中的属性定义每个属性通过SRCategory、LocDisplayName、SRDescription三个特性标注分组Category、显示名称与描述文本对应 StringResources.resx 中的本地化资源对话框维护一份本地快照UserSettings的私有字段点击OK后才调用Apply()一次性写回底层Settings对象FormOptions.cs点击Cancel或按Esc键则直接关闭且不生效ProcessDialogKey处理 Esc 键Reset按钮会弹出确认框将所有选项恢复为内置默认值Reset()方法默认值清单可对照 Settings.cs 的SetDefaults()。对话框中各项设置的最终存储位置由Settings Location决定详见下文。默认设置文件是%APPDATA%\Microsoft\Xml Notepad\XmlNotepad.settingssettings.md。Analytics匿名使用数据开关该分组控制是否收集匿名的应用使用数据。首次安装启动时 XML Notepad 会弹窗询问是否允许统计analytics.md你随时可以通过 Options 中的Allow analytics开关重新决定。对应设置项AllowAnalytics默认False首次询问的判定逻辑位于 FormMain.cs当AnalyticsClientId为空且AllowAnalytics为真时弹窗选择会写入设置文件且不再重复出现企业批量部署时可通过环境变量XML_NOTEPAD_DISABLE_ANALYTICS1全局禁用在 Program.cs 中读取若希望用户根本看不到该选项可在设置文件中将AnalyticsClientId设为disabled此时 FormOptions.cs 会通过MemberFilter将 AllowAnalytics 属性从属性网格中隐藏。颜色主题、颜色与字体该分组允许选择Light浅色/ Dark深色两套主题并可逐项定制各类节点使用的颜色以及树视图字体。主题设置项为Theme枚举ColorTheme.Light/ColorTheme.Dark默认Light两套主题的颜色分别存放在LightColors与DarkColors类型ThemeColors中。内置默认值定义于 Settings.cs 的GetDefaultColors()例如浅色主题下Element RGB(0, 64, 128)、Attribute Maroon、Comment Green、PI Purple、Text Black、Background White、ContainerBackground AliceBlue深色主题下Background RGB(30, 30, 30)、ContainerBackground RGB(37, 37, 38) 等可定制的颜色项每个颜色下拉都附带调色板包括Element元素、Attribute属性、Comment注释、PI处理指令、Text文本、CDATA、Schema aware text color由 schema 提升的文本、Background工作区背景、Container background非文本节点背景、Editor background文本编辑器背景字体设置项为Font默认Courier New10ptSetDefaults()与Reset()均如此确认时Apply()会把字体拆分为FontFamily、FontSize、FontStyle、FontWeight四个独立设置写入文件FormOptions.cs主题与颜色的切换由Theme属性 setter 联动切换主题时会先SaveColors()保存当前主题颜色快照再LoadColors()载入另一套FormOptions.cs。Editor文本编辑器与文件重载行为该分组包含两项Default text editorTextEditor默认%SystemRoot%\notepad.exe当 XML 文件无效、无法在 XML Notepad 中打开时会调用该外部编辑器打开文件。调用逻辑位于 FormMain.cs 的OpenTextFile()若设置值为空或文件不存在则回退到系统目录的 notepad.exePrompt before reloadPromptOnReload默认True控制当 XML 文件在磁盘上被修改时是否先弹窗确认再自动重载。在 FormMain.cs 中若文档有未保存修改Dirty仍会先询问若无未保存修改且PromptOnReload为False则直接重载文件。Formatting保存格式化与空白处理该分组集中了保存 XML 文件时的格式化选项对应Formatting Options分组包括设置项设置键默认值说明Auto format on saveAutoFormatOnSaveTrue保存时是否自动格式化 XMLIndent levelIndentLevel2保存格式化时使用的缩进字符个数Indent charIndentCharSpace缩进字符空格或 Tab枚举IndentCharNew line characterNewLineChars\r\n换行符序列\r表示 0xD、\n表示 0xA\r\n即 Windows 风格换行字符串在文件中以\r\n转义形式存储TreeView indent pixelsTreeIndent12树视图中每级缩进的像素数Preserve WhitespacePreserveWhitespaceFalse打开文件时是否保留全部空白。为True时树中会显示所有 Whitespace 节点保存时这些空白也会原样写回No byte order mark on saveNoByteOrderMarkFalse保存时是否为 UTF-8EF BB BF或 UTF-16FF FE写入 BOMAttributes on a new lineAttributesOnNewLineFalse格式化时每个属性独占一行并缩进对齐PreserveWhitespace的底层作用体现在 DomLoader.cs它直接决定XmlDocument.PreserveWhitespace属性的取值从而影响文档加载与保存。此外该选项还会影响 XSLT 输出见 XSLT 一节。LanguageXSD 注解语言选择Language默认空字符串用于指定从关联 XSD schema 的注解中选取哪种语言的文档说明。它主要作用于schema 感知的提示TooltipXmlTreeView.cs 调用SchemaCache.GetAnnotation(..., Language)读取对应语言的注解schema 文档化内容展示SchemaCache.GetDocumentation(..., Language)XmlTreeView.cs。即当 XSD 中同一元素提供了多种语言的xs:documentation时此设置决定树视图显示哪一种。对应分组为Language Options。Long Lines长行处理策略Long Lines分组解决单行过长的编辑体验问题涉及三个设置设置项设置键默认值说明Maximum Line LengthMaximumLineLength10000触发重新格式化提示的最大行长阈值Autoformat Long LinesAutoFormatLongLinesFalse超过阈值时是否自动格式化而不再弹窗询问Maximum Value LengthMaximumValueLength32767short.MaxValue文本编辑框中单行可输入的最大长度直接映射到文本编辑器的MaximumLineLengthNodeTextView.cs长行检查逻辑位于 NodeTextView.cs 的CheckTextLength()当某行长度超过MaximumLineLength时若AutoFormatLongLines为真则直接调用FormatLines()自动折行否则弹出 Yes/No/Cancel 询问选择 Yes 才进行格式化Cancel 取消本次编辑。Schema Optionsschema 感知文本提升该分组控制树视图是否展示提升的特殊节点文本即把具有特殊名字的子节点文本显示到父节点行上Show schema aware textSchemaAwareText默认True开启后将 XSD 中定义为 key/id 的元素内容提升显示到父元素名称行Special namesSchemaAwareNames默认id,name,title,key即使没有 schema 信息名字属于该列表的子节点文本也会被提升。对应描述见 StringResources.resx分组名为Schema Options。源码中提升逻辑配合SchemaAwareTextColor颜色浅色主题默认 RGB(0,134,198)将提升文本以特殊颜色呈现在树中。Settings Location设置文件存放位置SettingsLocation枚举Portable/Local/Roaming默认逻辑为Auto决定XmlNotepad.settings文件存放目录settings.md名称位置Portable存放在XmlNotepad.exe所在安装目录Local%LOCALAPPDATA%\Microsoft\Xml Notepad\Roaming%APPDATA%\Microsoft\Xml Notepad\Portable便于通过xcopy将整个目录复制到其他机器后获得相同设置若程序安装在只读目录如c:\Program Files该选项不可用更改此选项会移动现有设置文件若多个位置都存在XmlNotepad.settings将按 Portable → Local → Roaming 的优先级取第一个在 Settings.cs 中GetLocation()兼容旧版整数存储并默认SettingsLocation.AutoSetLocation()则把枚举值序列化为字符串。通过模板批量预置设置要在一批机器上预配置 XML Notepad可把定制好的XmlNotepad.template.settings放在XmlNotepad.exe旁边用户首次启动时会以此模板作为初始默认设置随后复制到 Roaming 位置。仓库中的示例模板见 XmlNotepad.template.settings它展示了完整可用的设置文件结构例如Settings AutoFormatLongLinesFalse/AutoFormatLongLines AutoFormatOnSaveTrue/AutoFormatOnSave DisableDefaultXsltFalse/DisableDefaultXslt EnableXsltScriptsTrue/EnableXsltScripts FontFamilyCourier New/FontFamily FontSize10/FontSize IgnoreDTDFalse/IgnoreDTD IndentCharSpace/IndentChar IndentLevel2/IndentLevel MaximumLineLength10000/MaximumLineLength MaximumValueLength32767/MaximumValueLength NewLineChars\r\n/NewLineChars NoByteOrderMarkFalse/NoByteOrderMark ThemeLight/Theme UpdateEnabledTrue/UpdateEnabled UpdateFrequency20.00:00:00/UpdateFrequency UpdateLocationhttps://lovettsoftwarestorage.blob.core.windows.net/downloads/XmlNotepad/Updates.xml/UpdateLocation /Settings设置文件采用 XML 格式由 Settings.cs 的Load()反序列化读取时类型信息来自程序内的默认值文件本身不存储类型Save()序列化时按键名排序以保证稳定性文件被外部修改时FileSystemWatcher会触发Changed事件并延迟 250ms 合并提示Settings.cs。UpdatesClickOnce 自动更新机制该分组配置与 ClickOnce 安装器配套的自动更新机制updates.md包含三项Enable updatesUpdateEnabled默认True为False时不再轮询更新且 Help 菜单中的 Check for updates... 菜单项会被隐藏Update locationUpdateLocation默认指向https://lovettsoftwarestorage.blob.core.windows.net/downloads/XmlNotepad/Updates.xml指定承载Updates.xml信息的端点Update frequencyUpdateFrequency默认20.00:00:00以dd.hh:mm:ss格式表示的轮询间隔。注意该值只能大于Updates.xml中声明的frequency默认每天一次FormOptions.cs 会校验格式错误报 timespan invalid format小于 30 分钟报 Update Frequency cannot be less than 30 minutes。底层实现UpdaterUpdater.cs的要点启动时先尝试从程序目录下updates.xml引导Bootstrap()获取application/location后自动更新UpdateLocation设置轮询条件为距上次检查LastUpdateCheck超过UpdateFrequency检查成功后立即写回LastUpdateCheck避免对服务器造成压力CheckForUpdate()中_lastCheck DateTime.Now若Updates.xml中location变了会提示 update page has been moved - check your settings 并同步选项对话框中的值发现新版本后主菜单栏右侧会出现按钮点击打开下载页面非 ClickOnce 安装时ClickOnce 安装下更新全自动完成。仓库自带的更新信息文件见 Updates.xml其结构如下updates application titleMicrosoft XML Notepad/title locationhttps://lovettsoftwarestorage.blob.core.windows.net/downloads/XmlNotepad/Updates.xml/location downloadhttps://lovettsoftwarestorage.blob.core.windows.net/downloads/XmlNotepad/readme.htm/download installerhttps://microsoft.github.io/XmlNotepad/install//installer historyhttps://github.com/microsoft/XmlNotepad/blob/master/src/Updates/Updates.xml/history frequency1.00:00:00/frequency /application version number2.9.0.16 bugFix issue #430: Autoformat on Save with empty XML-Elements./bug featureFormatting Options has new setting to format Xml attributes each on a separate line./feature /version ... /updates各字段含义title应用标题location远程更新位置变化时自动同步到选项设置installer各版本安装包所在网页history版本变更历史frequency轮询频率下限默认不超过每天一次每个version number...描述该版本修复的问题与新特性XML Notepad 会将其与当前程序集版本比较以判断是否有新版。企业环境中还可通过设置DisableUpdateUI为True隐藏整个更新 UI 与菜单项updates.md此时 FormOptions.cs 会把 UpdateLocation、EnableUpdate、UpdateFrequency 三个属性全部隐藏。ValidationDTD 校验与行号索引上限Validation分组包含两项Ignore DTDIgnoreDTD默认False为True时跳过 DTD 校验Maximum nodes for validationMaximumLineIndex默认1000000限制被索引行列位置信息的节点数量上限。该限制存在是因为为每个节点维护行列索引会占用大量额外内存且会让超大 XML 文件的编辑变慢StringResources.resx。MaximumLineIndex在 DomLoader.cs 中读取并在AddToTable()中控制当已索引的LineInfo数量达到上限后即停止记录注释明确写道 stop these tables from eating up too much memory on very large XML documents。这些行列信息用于将校验错误准确定位到具体行号。另外在 XSLT 转换场景中IgnoreDTD还会影响 XSLT 加载时的DtdProcessingAsyncXslt.cs。XmlDiffXML 比较选项XmlDiff分组控制两个 XML 文档比较XmlDiff行为全部为布尔开关默认均为False设置项设置键含义Ignore child orderXmlDiffIgnoreChildOrder忽略子元素顺序差异Ignore commentsXmlDiffIgnoreComments忽略注释差异Ignore processing instructionsXmlDiffIgnorePI忽略处理指令差异Ignore whitespaceXmlDiffIgnoreWhitespace忽略元素间无关紧要的空白差异Ignore namespacesXmlDiffIgnoreNamespaces忽略命名空间差异Ignore prefixesXmlDiffIgnorePrefixes忽略命名空间前缀差异Ignore XML declarationsXmlDiffIgnoreXmlDecl忽略 XML 声明差异Ignore DTDXmlDiffIgnoreDtd忽略 DTD 差异Hide identicalXmlDiffHideIdentical在大文档中隐藏相同元素/属性压缩 HTML 比较结果体积其中XmlDiffHideIdentical在比较逻辑中被实际读取FormMain.cs用于生成比较结果时省略相同内容。XSLTXSLT 输出选项XSLT分组控制 XSLT Output 视图的行为xslt.md包括Enable ScriptsEnableXsltScripts默认True是否允许执行 XSLT 样式表中的msxsl:script脚本块。若不信任样式表来源的脚本代码请设为False。该值在 AsyncXslt.cs 中传入XsltSettings(enableDocumentFunction, enableScripts)且settings.EnableScript还会结合信任服务_trustService.CanTrustUrl()二次判断Disable default XSLTDisableDefaultXslt默认False为True时对没有?xml-stylesheet处理指令的文档不再套用默认 XSLT该默认 XSLT 的作用是把 XML 文档以 HTML 形式着色展示而是替换为一条 Default styling of your XML documents is disabled in your Options 提示AsyncXslt.csWeb Browser VersionBrowserVersion取值WebBrowser/WebView2选择渲染 XSLT 输出所用的浏览器内核。若机器上安装了 WebView2 组件可切换以获得更快、更新的 HTML 渲染参见 xslt.md 中的说明源码中XsltControl.InitializeBrowser()根据该设置初始化对应内核未支持 WebView2 时回退 WinFormsWebBrowserXsltControl.cs。注意Preserve Whitespace选项也会影响 XSLT 输出因为它改变了文档中空白节点的保留状态进而影响参与转换的 DOM。汇总默认值速查表以下为 Settings.csSetDefaults()与 XmlNotepad.template.settings 中可验证的选项默认值汇总选项设置键默认值Allow analyticsAllowAnalyticsFalseThemeThemeLightFontFontFamily/FontSizeCourier New / 10TreeView indentTreeIndent12像素Auto format on saveAutoFormatOnSaveTrueIndent level / charIndentLevel/IndentChar2 / SpaceNew line charsNewLineChars\r\nPreserve whitespacePreserveWhitespaceFalseNo BOM on saveNoByteOrderMarkFalseAttributes on new lineAttributesOnNewLineFalseLanguageLanguage空Show schema aware textSchemaAwareTextTrueSpecial namesSchemaAwareNamesid,name,title,keyMax line lengthMaximumLineLength10000Max value lengthMaximumValueLength32767Autoformat long linesAutoFormatLongLinesFalseMax nodes for validationMaximumLineIndex1000000Ignore DTDIgnoreDTDFalseEnable XSLT scriptsEnableXsltScriptsTrueDisable default XSLTDisableDefaultXsltFalseWeb Browser VersionBrowserVersionWebBrowserEnable updatesUpdateEnabledTrueUpdate frequencyUpdateFrequency20.00:00:00Update locationUpdateLocation默认微软更新端点Prompt before reloadPromptOnReloadTrueDefault text editorTextEditor%SystemRoot%\notepad.exe实用建议批量部署使用XmlNotepad.template.settings模板 XML_NOTEPAD_DISABLE_ANALYTICS1环境变量可在不打扰用户的前提下统一主题、校验与更新策略超大文件性能若经常编辑 20 MB 以上的 XML可适当降低MaximumLineIndex以节省内存、提升编辑速度同时配合PreserveWhitespace False减少树中的空白节点长行编辑文本编辑框的行长度受MaximumValueLength硬性约束映射到编辑器的MaximumLineLength而MaximumLineLength与AutoFormatLongLines控制是否自动折行二者职责不同、勿混淆XSLT 安全在打开不可信来源的 XSLT 文件时务必将Enable Scripts设为False。相关文档menus.md入口、settings.md存储位置、updates.md更新机制、analytics.md匿名统计、xslt.mdXSLT 输出。赞分享桌面应用开发工具【免费下载链接】XmlNotepadXML Notepad provides a simple intuitive User Interface for browsing and editing XML documents.项目地址https://gitcode.com/gh_mirrors/xm/XmlNotepad点击查看免费下载相关推荐Redux DevTools Extension 配置选项Options全解析从 API 参数到源码实现Redux DevTools Extension 配置选项Options全解析从 API 参数到源码实现 本篇技术指南以 docs/API/Argumen前端开发工具调试器Sass JavaScript API Options 全面解析从编译配置到源码级行为规范Sass JavaScript API Options 全面解析从编译配置到源码级行为规范 Sass 的 JavaScript API 是官方统一规范通过一前端XML Notepad专业级XML编辑工具全面解析XML Notepad专业级XML编辑工具全面解析 XML Notepad是一款专为XML文档浏览和编辑设计的Windows应用程序通过直观的用户界面和强大桌面应用开发工具上一篇Typst 安装三步走跨平台部署与中文配置完全指南下一篇Diagram Design开源贡献教程从提交PR到通过12道验证门禁创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考