コード例 #1
0
ファイル: FSMXmlWorker.cs プロジェクト: erad888/fsm-decompose
        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);
        }
コード例 #2
0
ファイル: NetXmlWorker.cs プロジェクト: erad888/fsm-decompose
        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);
        }