/// <summary> /// 将函数写入文件 /// </summary> /// <param name="writer">写入文件的对象</param> /// <param name="func">要写入的函数</param> public static void WriteFunction(XmlTextWriter writer, PicFunctionTabPage func) { ///写入标识 writer.WriteStartElement("Function"); writer.WriteAttributeString("Title", func.Title); writer.WriteAttributeString("ID", func.Id.ToString()); writer.WriteAttributeString("OpenType", func.MyOpenType.ToString()); writer.WriteAttributeString("OverrideType", func.MyOverride.ToString()); ///循环所有代码块 foreach (CodeBox box in func.ListCodeBoxChild.Values) { DataWriteFunction.WriteCodeBoxAribute(writer, box); } ///循环所有贝塞尔曲线 foreach (BezierLine line in func.GetBezierLines.Values) { DataWriteFunction.WriteBezierLine(writer, line); } ///结束函数的存储的标识 writer.WriteEndElement(); }
/// <summary> /// 将代码图转换为文件 /// </summary> /// <param name="Page">代码图对象</param> /// <param name="path">文件存放路径</param> public void PicToXml(PicTabPage pic, string path) { string filePath = path + pic.Title; ///检测本地文件是否已经存在 #region 如果文件不存在则创建 if (!CheckFile(filePath)) { XmlTextWriter writer = new XmlTextWriter(filePath, Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement(RootName); writer.WriteAttributeString("Title", pic.Title); writer.WriteAttributeString("ID", pic.Id.ToString()); ///循环所有代码块 writer.WriteStartElement("MainCodeBoxs"); foreach (CodeBox box in pic.ListCodeBoxChild.Values) { DataWriteFunction.WriteCodeBoxAribute(writer, box); } writer.WriteEndElement(); ///循环所有贝塞尔曲线 writer.WriteStartElement("MainBezierLines"); foreach (BezierLine line in pic.GetBezierLines.Values) { DataWriteFunction.WriteBezierLine(writer, line); } writer.WriteEndElement(); ///循环所有函数 foreach (PicFunctionTabPage func in pic.ListFunction) { DataWriteFunction.WriteFunction(writer, func); } ///循环所有属性 foreach (XAribute bute in pic.ListXAributes) { DataWriteFunction.WriteXAribute(writer, bute); } writer.WriteEndElement(); writer.Close(); } #endregion #region 如果存在则更新 else { XmlDocument XmlLoad = new XmlDocument(); XmlLoad.Load(path + pic.Title); XmlNode root = XmlLoad.SelectSingleNode(RootName); ///先清除所有然后在写入 root.RemoveAll(); XmlElement picroot = (XmlElement)root; picroot.SetAttribute("Title", pic.Title); picroot.SetAttribute("ID", pic.Id.ToString()); ///循环所有代码块 ///创建存放代码块的主节点 XmlElement MainCodeBoxs = XmlLoad.CreateElement("MainCodeBoxs"); foreach (CodeBox box in pic.ListCodeBoxChild.Values) { DataWriteFunction.UpdateCodeBoxAribute(XmlLoad, MainCodeBoxs, box); } picroot.AppendChild(MainCodeBoxs); ///循环所有贝塞尔曲线 ///创建存放贝塞尔曲线的主节点 XmlElement MainBeizierLines = XmlLoad.CreateElement("MainBezierLines"); foreach (BezierLine line in pic.GetBezierLines.Values) { DataWriteFunction.UpdateBezierLine(XmlLoad, MainBeizierLines, line); } ///添加节点 picroot.AppendChild(MainBeizierLines); ///循环所有函数 foreach (PicFunctionTabPage func in pic.ListFunction) { DataWriteFunction.UpdateFunction(XmlLoad, picroot, func); } ///循环所有属性 foreach (XAribute bute in pic.ListXAributes) { DataWriteFunction.UpdateXAribute(XmlLoad, picroot, bute); } XmlLoad.Save(path + pic.Title); } #endregion }