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

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • Dellbear816

    Dellbear816

    4 Mart 2008
  • TheRightTire

    TheRightTire

    14 EKİM 2009