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
相关产品推荐
相关产品推荐

