に、私は通常のファイルアップロードコントロールを経由してASP.NetページにアップロードされているXMLファイルを持って、XSDを参照し、XMLファイルをアップロードします。それが起きると、私はXMLを検証して逆シリアル化しようとしています。ただし、以下のコードは、実際にそれがこのようなXSDだ参照するXMLファイルを検証するために非常に便利です:私は、このXMLファイルをアップロードする場合は、唯一のXMLファイルがアップロードされ、そう.. \ localSchemaPathますはASP.Net
xsi:schemaLocation="someurl ..\localSchemaPath.xsd"
。 xsdは存在しないため、検証できません。
xsi:schemaLocation="someurl ..\localSchemaPath.xsd"
または XSI::のschemaLocation = "someurlのlocalSchemaPath XMLファイルのようなスキーマの場所で書くことができますよう
私はローカルXSDを保存した場合でも、それはまだかなり右ではないでしょう。 XSD」 または XSI:のschemaLocation = "someurl .................. \ localSchemaPath.xsd" それはそう望んだ場合 。
ジレンマ!
(この質問の目的のために、私はから以下のコードを挟まれている:Validating an XML against referenced XSD in C#)
using System.Xml;
using System.Xml.Schema;
using System.IO;
public class ValidXSD
{
public static void Main()
{
// Set the validation settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
// Create the XmlReader object.
XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);
// Parse the file.
while (reader.Read()) ;
}
// Display any warnings or errors.
private static void ValidationCallBack(object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
}