SORU
15 NİSAN 2009, ÇARŞAMBA


C başvurulan XSD karşı XML doğrulamak#

Ben bir XML bu gibi belirli bir şema yer var dosya:

xsi:schemaLocation="someurl ..\localSchemaPath.xsd"

C doğrulamak için teşekkürler. Dosyayı açtığımda Visual Studio, şemaya göre doğrular ve mükemmel hataları listeler. Her nasılsa, olsa da, C otomatik olarak doğrulamak için görünmüyor olabilir# gibi karşı doğrulamak için şema belirtmeden:

XmlDocument asset = new XmlDocument();

XmlTextReader schemaReader = new XmlTextReader("relativeSchemaPath");
XmlSchema schema = XmlSchema.Read(schemaReader, SchemaValidationHandler);

asset.Schemas.Add(schema);

asset.Load(filename);
asset.Validate(DocumentValidationHandler);

Ben şema XML dosyası otomatik olarak belirtilen doğrulamak için olması gerekmez mi ? Neyi kaçırıyorum ?

CEVAP
15 NİSAN 2009, ÇARŞAMBA


Oluşturduğunuzda bir XmlReaderSettings örnek oluşturmak ve XmlReader için bu geçmesi gerekir. Daha sonra Ayarlar ValidationEventHandler için doğrulama hataları almak için abone olabilirsiniz. Kodunuzu bu gibi bakıyor sona erecek:

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);

    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • George McCarron

    George McCar

    29 Mayıs 2013
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008