【问题标题】:C# DataSet validation from XML schema来自 XML 模式的 C# 数据集验证
【发布时间】:2013-04-08 13:23:55
【问题描述】:

我有一个 xml 架构。我想填充一个 DataSet 并使用此架构对其进行验证。

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。然后我得到了例外。

如何验证此表?谢谢。


编辑 正如我从答案和 cmets 中了解到的那样,在填充数据集时无法进行验证。然后我从数据集中读取 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);

【问题讨论】:

  • 一般来说,读取 XML Schema 会为数据集、表结构等设置容限。然后它会实时验证自己。您将不能添加与架构不匹配的任何内容,因此如果架构设置正确,验证表是一个自动假设。

标签: c# validation datatable dataset xsd


【解决方案1】:

我相信这会做到:

    // 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文件编辑为与schema不匹配,读取xml文件时会抛出异常。

因此,在您的情况下,您可能必须将数据集导出为 xml 字符串,然后再将其读回。您说执行此操作时遇到异常...。什么异常?也许数据对于您拥有的架构无效。

【讨论】:

  • 请注意,此模型将仅验证那些影响创建有效数据集的能力的 xml 架构约束。例如,它将验证“五”不是有效的 xs:integer 值。但是,如果您对字符串有枚举限制 (xs:enumeration),它不会验证 xml 文件中的字符串值实际上是否与已识别的枚举可能值之一匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2014-04-17
  • 2015-09-15
相关资源
最近更新 更多