예제 #1
0
        private void проверитьXMLФайлToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFD_XML.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            // получаем выбранный файл
            string filePath = Path.GetFileName(openFD_XML.FileName);

            // читаем файл в строку
            try
            {
                XmlReaderSettings      xsdSetting             = new XmlReaderSettings();
                XmlSchema              xs                     = new XmlSchema();
                SeSchema               seSchema               = null;
                XmlSchemaSet           xss                    = new XmlSchemaSet();
                ValidationEventHandler ValidationErrorHandler = null;
                xss.ValidationEventHandler += ValidationErrorHandler;
                xss.XmlResolver             = new XmlUrlResolver();
                if ((treeView.SelectedNode != null) && (treeView.SelectedNode.Tag is SeSchema))
                {
                    seSchema = (SeSchema)treeView.SelectedNode.Tag;
                }
                else
                {
                    seSchema = (SeSchema)comboBox_SchemaList.SelectedItem;
                }
                seSchema.SaveXSD(xs);
                xss.Add(xs);
                //для записи в readonly ElementSchemaType
                try
                {
                    xss.Compile();
                }
                catch (Exception em)
                {
                    MessageBox.Show(em.ToString());
                }
                XDocument doc = XDocument.Load(openFD_XML.FileName);
                string    msg = "";
                doc.Validate(xss, (o, e1) =>
                {
                    msg += "\n - " + e1.Message + Environment.NewLine;
                }
                             );
                MessageBox.Show(msg == "" ? $"Документ { filePath} успешно прошел проверку по схеме {seSchema.Name}" : $"Документ { filePath} НЕ прошел проверку: \n" + msg);
            }
            catch {
                MessageBox.Show("Проверка невозможна");
            }
        }
예제 #2
0
        private void сохранитьТекущуюСхемуToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (saveFD_XSD.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            // получаем выбранный файл
            string                 path     = saveFD_XSD.FileName;
            string                 filename = Path.GetFileName(path);
            XmlSchema              xs1      = new XmlSchema();
            SeSchema               seSchema = null;
            XmlSchemaSet           xss      = new XmlSchemaSet();
            ValidationEventHandler ValidationErrorHandler = null;

            xss.ValidationEventHandler += ValidationErrorHandler;
            xss.XmlResolver             = new XmlUrlResolver();
            if ((treeView.SelectedNode != null) && (treeView.SelectedNode.Tag is SeSchema))
            {
                seSchema = (SeSchema)treeView.SelectedNode.Tag;
            }
            else
            {
                seSchema = (SeSchema)comboBox_SchemaList.SelectedItem;
            }
            seSchema.SaveXSD(xs1);
            xss.Add(xs1);
            //для записи в readonly ElementSchemaType
            try
            {
                xss.Compile();
            }
            catch (Exception em)
            {
                MessageBox.Show(em.ToString());
            }
            using (FileStream fs = new FileStream(filename + ".xsd", FileMode.Create, FileAccess.ReadWrite))
            {
                using (XmlTextWriter tw = new XmlTextWriter(fs, new UTF8Encoding()))
                {
                    tw.Formatting = Formatting.Indented;
                    xs1.Write(tw);
                }
                fs.Close();
            }

            MessageBox.Show($"Файл {filename}.xsd успешно сохранен");
        }