0

私は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 を再度リロードしようとしました。それから私は例外を得ました。

このテーブルを検証するにはどうすればよいですか? ありがとう。


編集 回答とコメントから理解しているように、データセットの入力中に検証することはできません。次に、データセットから 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);
4

1 に答える 1

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 ファイルを編集すると、xml ファイルの読み取り時に例外がスローされます。

したがって、あなたの場合、データセットを xml 文字列にエクスポートしてから、再度読み込む必要があるかもしれません。これを行うと例外が発生すると言います....どのような例外ですか? たぶん、データはあなたが持っているスキーマに対して有効ではありません。

于 2013-04-08T13:30:39.080 に答える