public static bool SaveFSMToFile(FiniteStateMachine <StructAtom <string>, StructAtom <string> > fsm) { if (fsm == null) { throw new ArgumentNullException("fsm"); } bool result = false; try { var sfd = new SaveFileDialog(); sfd.Filter = "xml-файл (*.xml)|*.xml"; if (sfd.ShowDialog() == DialogResult.OK) { var fi = new FileInfo(sfd.FileName); if (fi.Extension == ".xml") { XmlDocument doc = new XmlDocument(); FSMXmlWorker w = new FSMXmlWorker(fsm); doc.AppendChild(w.CreateXmlNode(doc)); doc.Save(fi.FullName); result = true; } else { MessageBox.Show("Файл должен иметь расширение .xml", "Сохранение автомата", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch (Exception exc) { result = false; } return(result); }
public XmlNode CreateXmlNode(XmlDocument doc, string nodeName) { if (doc == null) { throw new ArgumentNullException("doc"); } XmlNode result = doc.CreateElement(nodeName); FSMXmlWorker w1 = new FSMXmlWorker(value.FSM); result.AppendChild(w1.CreateXmlNode(doc, "FSM")); var partitionsNode = doc.CreateElement("OrtPartitionsSet"); foreach (var partition in value.DecomposeAlg.OrtPartitionsSet) { StatePartitionXmlWorker w2 = new StatePartitionXmlWorker(partition); partitionsNode.AppendChild(w2.CreateXmlNode(doc)); } result.AppendChild(partitionsNode); return(result); }