VB.NET实现XML文件追加写入,避免覆盖原有数据
解决XML添加条目被覆盖的问题
你的代码每次调用都会新建XmlDocument并重新创建整个XML结构,因此会直接覆盖原有文件。要实现追加条目的效果,需要先判断文件是否存在:存在则加载现有内容再添加新元素,不存在才创建全新的文档结构。
修改后的代码如下:
Imports System.IO Imports System.Xml ' 子程序核心逻辑 Dim fabpath As String = Path.Combine(Application.StartupPath, "Fabricantes.xml") Dim xmlDoc As New XmlDocument() If File.Exists(fabpath) Then ' 加载已存在的XML文件 xmlDoc.Load(fabpath) ' 定位到根节点Fabricantes Dim fabricantes As XmlNode = xmlDoc.SelectSingleNode("Fabricantes") If fabricantes IsNot Nothing Then ' 创建新的厂商元素并追加到根节点下 Dim newFabricante As XmlElement = xmlDoc.CreateElement("Nome_do_Fabricante") newFabricante.InnerText = fabric.Name fabricantes.AppendChild(newFabricante) End If Else ' 文件不存在时初始化XML基础结构 Dim declNode As XmlNode = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", Nothing) xmlDoc.AppendChild(declNode) Dim fabricantes As XmlNode = xmlDoc.CreateElement("Fabricantes") xmlDoc.AppendChild(fabricantes) Dim newFabricante As XmlElement = xmlDoc.CreateElement("Nome_do_Fabricante") newFabricante.InnerText = fabric.Name fabricantes.AppendChild(newFabricante) End If ' 保存修改后的XML文件 xmlDoc.Save(fabpath)
关键修改点
- 增加
File.Exists判断,区分首次创建和后续追加两种场景 - 文件存在时直接加载现有内容,避免重建结构覆盖数据
- 始终在已有的
Fabricantes节点下追加新元素,保证XML结构符合预期
内容的提问来源于stack exchange,提问作者Antônio Bezerra
相关产品推荐
相关产品推荐

