You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML子节点更新异常:文件时间戳变化但内容未更新

XML节点更新后文件内容未变更的问题解决

执行XML节点更新操作后,程序无报错,文件时间戳发生变化,但XML内容并未更新。

你的XML文件内容:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<CGTemplateDATA>
  <title>Reden i Smedager</title>
  <text>Det er tidligt på sæsonen. Vi håber på bedre vejr og en mage til Clyde.</text>
  <reference>Læs mere om storkene på storkene.dk</reference>
</CGTemplateDATA>

使用的脚本:

XmlNode root = doc.DocumentElement;
//Get node
XmlNode nodeTitle = doc.DocumentElement.SelectSingleNode("title");
//Create a new title element
XmlElement elem = doc.CreateElement("title");
elem.InnerText = txtTitle.Text;
//Replace the title element.
root.ReplaceChild(elem, nodeTitle);

问题原因

你只完成了内存中XML文档的节点替换操作,但没有将修改后的文档保存回磁盘文件。内存里的修改不会自动同步到磁盘,文件时间戳变化可能是读取/打开文件时的操作导致,并非保存了修改内容。

解决方法

在节点替换完成后,调用XmlDocument的Save方法,将修改后的文档写入磁盘:

修改后的完整脚本:

XmlNode root = doc.DocumentElement;
// 获取节点
XmlNode nodeTitle = doc.DocumentElement.SelectSingleNode("title");
// 创建新的title元素
XmlElement elem = doc.CreateElement("title");
elem.InnerText = txtTitle.Text;
// 替换title元素
root.ReplaceChild(elem, nodeTitle);
// 关键步骤:保存修改到文件
doc.Save("你的XML文件完整路径"); // 替换为实际文件路径

简化写法

不需要创建新元素,直接修改原节点的InnerText即可:

XmlNode nodeTitle = doc.DocumentElement.SelectSingleNode("title");
if (nodeTitle != null)
{
    nodeTitle.InnerText = txtTitle.Text;
    doc.Save("你的XML文件完整路径");
}

内容的提问来源于stack exchange,提问作者Tue Sandbæk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:53:16