/// <summary> /// 将 KepwareServer 信息持久化 /// </summary> /// <param name="type">编辑类别:1-保存;2-删除</param> /// <param name="server">KepwareServer对象</param> /// <param name="dataFileName">本地持久化文件名</param> public void ModifyDataFile(int type, TIRAPOPCServer server, string dataFileName) { XmlDocument xml = new XmlDocument(); XmlNode rootNode = null; if (!File.Exists(dataFileName)) { xml.AppendChild(xml.CreateXmlDeclaration("1.0", "utf-8", "")); rootNode = xml.CreateElement("root"); xml.AppendChild(rootNode); } else { try { xml.Load(dataFileName); } catch (Exception error) { Debug.WriteLine(string.Format("加载[{0}]文件时出错:[{1}]", dataFileName, error.Message)); return; } rootNode = xml.SelectSingleNode("root"); if (rootNode == null) { Debug.WriteLine( string.Format( "[{0}] 文件中不存在 root 根节点")); return; } } // 在第一层子节点中查找 Device 节点,若没有找到则创建该节点 XmlNode serversNode = null; foreach (XmlNode node in rootNode.ChildNodes) { if (node.Name == "OPCServers") { serversNode = node; break; } } if (serversNode == null) { serversNode = xml.CreateElement("OPCServers"); rootNode.AppendChild(serversNode); } // 在 OPCServers 节点中查找指定 Address 的 OPCServer 子节点,如果找到则从 Devices 节点中删除 XmlNode serverNode = IRAPXMLUtils.GetChildNodeWithPropertyValue( serversNode, server); if (serverNode != null) { serversNode.RemoveChild(serverNode); } if (type == 1) { #region 添加设备节点 serverNode = xml.ImportNode(server.GenerateXMLNode(), true); serversNode.AppendChild(serverNode); #endregion } // 保存 XML 到文件 xml.Save(dataFileName); }