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

  • kindlechatmail

    kindlechatma

    25 AĞUSTOS 2010
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010
  • XxMinayaxX1

    XxMinayaxX1

    9 Mayıs 2012