C#/ .NET 2.0で、XmlSerializerを使用してオブジェクトをシリアル化する場合、XMLスキーマに対して出力を検証する最も簡単な方法は何ですか?
問題は、XmlSerializerを使用して無効なXMLを作成するのは非常に簡単であり、面倒に見えないXMLを検証する方法が見つからないことです。理想的には、XmlSerializerでスキーマを設定するか、検証するXmlWriterを使用することを期待します。
C#/ .NET 2.0で、XmlSerializerを使用してオブジェクトをシリアル化する場合、XMLスキーマに対して出力を検証する最も簡単な方法は何ですか?
問題は、XmlSerializerを使用して無効なXMLを作成するのは非常に簡単であり、面倒に見えないXMLを検証する方法が見つからないことです。理想的には、XmlSerializerでスキーマを設定するか、検証するXmlWriterを使用することを期待します。
検証リーダーを使用して再度読み込むのはどうですか
これが簡単な刺し傷です
Stream stream = new MemoryStream(Encoding.UTF8.GetBytes("<YourXml />"));
var input = mappingAssembly.GetManifestResourceStream(
"MySchema.xsd"
); //This could be whatever resource your schema is
var schemas = new XmlSchemaSet();
schemas.Add(
"urn:YourSchemaUrn",
XmlReader.Create(
input
)
);
var settings = new XmlReaderSettings
{
ValidationType = ValidationType.Schema,
Schemas = schemas
};
settings.ValidationEventHandler += MakeAHandlerToHandleAnyErrors;
var reader = XmlReader.Create(stream, settings);
while (reader.Read()) {} //Makes it read to the end, therefore validates
エラーが発生したときに何かを実行するには、ハンドラーが必要です。
XmlReaderを使用して、XSDスキーマに対してXMLファイルを検証できます。