autohotkey通过msxml2.domdocument.6.0 com对象实现xml读写,需创建对象、禁用异步与验证、加载/解析、修改节点或属性,再调用save()保存;正则仅适用于简单无嵌套场景。

AutoHotkey 本身不内置 XML 解析器,但可通过 COM 对象(如 MSXML2.DOMDocument)直接读写标准 XML 文件,这是最稳定、最常用的方式。关键在于正确创建 DOM 对象、加载/解析、修改节点或属性,再保存回文件。
用 MSXML2 读取 XML 文件
使用 MSXML2.DOMDocument.6.0 加载本地 XML 文件或字符串:
- 先创建对象:
doc := ComObjCreate("MSXML2.DOMDocument.6.0") - 关闭异步加载和 DTD 验证(避免报错):
doc.async := false,doc.validateOnParse := false - 调用
load()加载文件(传入完整路径),或loadXml()加载 XML 字符串 - 检查是否成功:
if !doc.parseError.errorCode表示无语法错误
用 MSXML2 修改 XML 内容
支持按标签名、XPath 或属性查找节点,然后读写文本内容或属性值:
- 获取所有同名元素:
nodes := doc.getElementsByTagName("rownum") - 遍历并修改属性:
node.setAttribute("value", node.getAttribute("value") + 45) - 修改文本节点:
node.text := "新内容"(适用于<title>旧标题</title>这类结构) - 新增节点需用
createElement()和appendChild()配合(注意命名空间兼容性)
用 MSXML2 保存 XML 文件
修改完成后,调用 save() 方法写入磁盘:
支持静态模板,支持动态模板标签,支持图片.SWF.FLV系列广告标签.支持百万级海量数据,绑定内置URL伪装策略(URL后缀名随你怎么写),绑定内置系统升级策略(暂不开放升级),绑定内置模板付费升级策略(暂不开放更新)。支持标签容错处理,绑定内置攻击防御策略,绑定内置服务器优化策略(系统内存释放的干干净净)。支持离线运行,支持次目录,兼容U主机。支持会员功能,支持文章版块权限阅读,支持会员自主注册
-
doc.save("C:\path\to\output.xml")—— 路径必须是绝对路径,且目录需存在 - 若需保留缩进或格式化输出,MSXML 默认不美化;可手动拼接字符串,或用
xmlTextWriter类(需额外封装) - 保存失败常见原因:路径权限不足、文件被占用、路径含中文未正确处理(建议用
A_ScriptDir拼接)
替代方案:正则+字符串处理(仅限简单场景)
对结构固定、无嵌套、无转义的 XML 片段,可用 RegExReplace 快速替换,例如:
xml := RegExReplace(xml, 'i)<rownum value="(\d+)">', '<rownum value="' . ($1 + 45) . '">')</rownum></rownum>
⚠️ 注意:这不是真正的 XML 解析,无法处理属性顺序变化、CDATA、注释、命名空间等,仅作临时应急。









