从XML模式验证c#数据集
本文关键字:数据集 验证 模式 XML | 更新日期: 2023-09-27 18:07:57
我有一个xml模式。我想填充一个数据集,并使用这个模式验证它。
DataSet package = new DataSet();
StringReader schemaResourceReader = new StringReader(PackageValidationLibrary.Properties.Resources.myPackage);
package.ReadXmlSchema(schemaResourceReader);
package.Tables["Table1"].Rows.Add(packageDetail.date,packageDetail.code,packageDetail.amount,packageDetail.place,"0");
package.Tables["Table2"].Rows.Add("0","0");
foreach (Cek data in recordList){
package.Tables["Table3"].Rows.Add(data.Serial, data.Code, data.Branch, data.ValidityDate, "0");
}
使用上面的代码,我可以加载数据,但我不能验证它,尽管数据集导入了模式。
我尝试使用package.GetXml()方法获取xml字符串并再次重新加载xml。然后我得到了例外
如何验证这个表?谢谢。
编辑正如我从答案和评论中理解的那样,在填充数据集时不可能进行验证。然后,我从dataset中读取xml,并使用下面给出的配置加载它。
_schema = XmlSchema.Read(new StringReader(PackageValidationLibrary.Properties.Resources.TakasPaketi), new ValidationEventHandler(ValidationEventHandler));
XmlReaderSettings _settings = new XmlReaderSettings();
_settings.Schemas.Add(_schema);
_settings.ValidationType = ValidationType.Schema;
XmlReader vreader = XmlReader.Create(stream, _settings);
我相信这会成功的:
// First, read in the XML schema
DataSet MyDataSet = new DataSet();
MyDataSet.ReadXmlSchema(@"C:'YourSchema.xsd");
// Now, read in the XML file (it is validated
// against the schema when it is read in).
MyDataSet.ReadXml(@"C:'YourFile.xml");
如果您编辑的数据xml文件不匹配模式,读取xml文件时将抛出异常。
因此,在您的情况下,您可能不得不将数据集导出为xml字符串,然后再将其读入。你说你得到异常当你这样做....什么异常?