Share via


XML Şemaları Okuma ve Yazma

Şema Nesne Modeli (SOM) API'si, dosyalardan veya diğer kaynaklardan XML Şema tanım dili (XSD) şemalarını okumak ve yazmak ve ad alanında World Wide Web Consortium (W3C) XML Şema Önerisi'nde System.Xml.Schema tanımlanan yapılarla eşlenen sınıflar kullanılarak bellek içinde XML şemaları oluşturmak için kullanılabilir.

XML Şemaları Okuma ve Yazma

sınıfı, XmlSchema XML şemalarını Read okumak ve yazmak için ve Write yöntemlerini sağlar. yöntemi XML Read şemasını temsil eden bir XmlSchema nesne döndürür ve XML şeması okunurken karşılaşılan şema doğrulama uyarılarını ve hatalarını işlemek için isteğe bağlı ValidationEventHandler bir parametre alır.

Write yöntemi , TextWriter ve nesnelerine StreamXML şemaları yazar ve XmlWriter isteğe bağlı XmlNamespaceManager bir nesneyi parametre olarak alabilir. bir XmlNamespaceManager XML şemasında karşılaşılan ad alanlarını işlemek için kullanılır. Sınıfı hakkında XmlNamespaceManager daha fazla bilgi için bkz . XML Belgesinde Ad Alanlarını Yönetme.

Aşağıdaki kod örneği, dosyadan ve dosyaya XML şemalarının okunmasını ve yazmasını gösterir. Kod örneği dosyayı alır example.xsd , yöntemini kullanarak bir XmlSchema nesneye staticRead okur ve ardından dosyayı konsola ve yeni new.xsd bir dosyaya yazar. Kod örneği, XML şeması okunurken karşılaşılan şema doğrulama uyarılarını veya hatalarını işlemek için yöntemine parametre staticRead olarak da sağlarValidationEventHandler. ValidationEventHandler belirtilmezse ()null uyarı veya hata bildirilmez.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Text;
using namespace System::Xml;
using namespace System::Xml::Schema;

ref class XmlSchemaReadWriteExample
{
public:

    static void Main()
    {
        try
        {
            XmlTextReader^ reader = gcnew XmlTextReader("example.xsd");
            ValidationEventHandler^ eventHandler = gcnew ValidationEventHandler(ValidationCallback);
            XmlSchema^ myschema = XmlSchema::Read(reader, eventHandler);
            myschema->Write(Console::Out);
            FileStream^ file = gcnew FileStream("new.xsd", FileMode::Create, FileAccess::ReadWrite);
            XmlTextWriter^ xwriter = gcnew XmlTextWriter(file, gcnew UTF8Encoding());
            xwriter->Formatting = Formatting::Indented;
            myschema->Write(xwriter);
        }
        catch(Exception^ e)
        {
            Console::WriteLine(e);
        }
    }

    static void ValidationCallback(Object^ sender, ValidationEventArgs^ args)
    {
        if (args->Severity == XmlSeverityType::Warning)
            Console::Write("WARNING: ");
        else if (args->Severity == XmlSeverityType::Error)
            Console::Write("ERROR: ");

        Console::WriteLine(args->Message);
    }
};

int main()
{
    XmlSchemaReadWriteExample::Main();
    return 0;
};
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Schema;

class XmlSchemaReadWriteExample
{
    static void Main()
    {
        try
        {
            XmlTextReader reader = new XmlTextReader("example.xsd");
            XmlSchema schema = XmlSchema.Read(reader, ValidationCallback);
            schema.Write(Console.Out);
            FileStream file = new FileStream("new.xsd", FileMode.Create, FileAccess.ReadWrite);
            XmlTextWriter xwriter = new XmlTextWriter(file, new UTF8Encoding());
            xwriter.Formatting = Formatting.Indented;
            schema.Write(xwriter);
        }
        catch(Exception e)
        {
            Console.WriteLine(e);
        }
    }

    static void ValidationCallback(object sender, ValidationEventArgs args)
    {
        if (args.Severity == XmlSeverityType.Warning)
            Console.Write("WARNING: ");
        else if (args.Severity == XmlSeverityType.Error)
            Console.Write("ERROR: ");

        Console.WriteLine(args.Message);
    }
}
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Schema

Class XmlSchemaReadWriteExample

    Shared Sub Main()
        Try
            Dim reader As XmlTextReader = New XmlTextReader("example.xsd")
            Dim myschema As XmlSchema = XmlSchema.Read(reader, AddressOf ValidationCallback)
            myschema.Write(Console.Out)

            Dim file As FileStream = New FileStream("new.xsd", FileMode.Create, FileAccess.ReadWrite)
            Dim xwriter As XmlTextWriter = New XmlTextWriter(file, New UTF8Encoding())
            xwriter.Formatting = Formatting.Indented
            myschema.Write(xwriter)
        Catch e As Exception
            Console.WriteLine(e)
        End Try
    End Sub

    Shared Sub ValidationCallback(ByVal sender As Object, ByVal args As ValidationEventArgs)
        If args.Severity = XmlSeverityType.Warning Then
            Console.Write("WARNING: ")
        Else
            If args.Severity = XmlSeverityType.Error Then
                Console.Write("ERROR: ")
            End If
        End If
        Console.WriteLine(args.Message)
    End Sub
End Class

Örnek girdi olarak alır example.xsd .

<?xml version="1.0"?>  
<xs:schema id="play" targetNamespace="http://tempuri.org/play.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/play.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">  
    <xs:element name='myShoeSize'>  
        <xs:complexType>  
            <xs:simpleContent>  
                <xs:extension base='xs:decimal'>  
                    <xs:attribute name='sizing' type='xs:string' />  
                </xs:extension>  
            </xs:simpleContent>  
        </xs:complexType>  
    </xs:element>  
</xs:schema>  

Ayrıca bkz.