シリアル化されたデータの検証に問題があります。XmlSerializer + schemaLocationについて混乱しました
私はXSDファイルを使い始めました。私はいくつかのサードパーティから入手しました。 xsdツールを使用して生成されたC#クラス。次に、最上位オブジェクトに
[XmlAttribute("noNamespaceSchemaLocation", Namespace = System.Xml.Schema.XmlSchema.InstanceNamespace)]
public string SchemaLocation = "http://localhost/schemas/AP_Transactions_10052011.xsd";
を追加しました。問題のURLは、コードを実行しているマシンからアクセスできることは明らかです。それから私は、正しくこれまでのところは良い
<?xml version="1.0" encoding="utf-8"?>
<BU_AP_Vendor_Invoices xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="http://local.com/schemas/AP_Transactions_10052011.xsd">
...
</BU_AP_Vendor_Invoices>
を生成する、XmlSerializer
を使用して、それをシリアル化しています。
public static void Validate(TextReader xmlData)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags = XmlSchemaValidationFlags.ProcessIdentityConstraints | XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += delegate(object sender, ValidationEventArgs args)
{
Console.WriteLine(args.Message);
};
using (XmlReader xmlReader = XmlReader.Create(xmlData, settings))
while (xmlReader.Read()) ;
}
XMLファイル内のすべての要素のためのCould not find schema information for the element 'element name'
警告を結果: は今、私はそうのようなファイルを検証しようとしています。私は、XSDが単にロードされていないことを意味します。
私はXmlReaderSettings.Schemas
を見ていましたが、読者はどのようにそこに追加すべきかを知っていましたか?私はスキーマを明示的に追加しないと、魔法は単に起こるだろうと考えましたが、それはうまくいかないようです。
問題を正しく解決する方法はありますか?
私はそれを逃したとは思わない。 –