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("Проверка невозможна"); } }
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 успешно сохранен"); }