다음을 통해 공유


XmlValidatingReader.SchemaType 속성

스키마 형식 개체를 가져옵니다.

네임스페이스: System.Xml
어셈블리: System.Xml(system.xml.dll)

구문

‘선언
Public ReadOnly Property SchemaType As Object
‘사용 방법
Dim instance As XmlValidatingReader
Dim value As Object

value = instance.SchemaType
public Object SchemaType { get; }
public:
property Object^ SchemaType {
    Object^ get ();
}
/** @property */
public Object get_SchemaType ()
public function get SchemaType () : Object

속성 값

노드 값이 내장 XSD(XML스키마 정의 언어) 형식인지 사용자 정의 simpleType 또는 complexType인지 여부에 따라 XmlSchemaDatatype, XmlSchemaSimpleType 또는 XmlSchemaComplexType입니다. 현재 노드에 스키마 형식이 없으면 Null 참조(Visual Basic의 경우 Nothing)입니다.

설명

참고

XmlValidatingReader 클래스는 Microsoft .NET Framework version 2.0에서 사용되지 않습니다. XmlReaderSettings 클래스와 Create 메서드를 사용하여 유효성 검사 XmlReader 인스턴스를 만들 수 있습니다. 자세한 내용은 XmlReader를 사용하여 XML 데이터의 유효성 검사를 참조하십시오.

반환된 형식에 대한 테스트가 필요합니다. 예를 들면 다음과 같습니다.

object obj = vreader.SchemaType;
 if (obj is XmlSchemaType)
 {
   XmlSchemaType st = (XmlSchemaType)obj;
   // use XmlSchemaType object
 }
 if (obj is XmlSchemaDatatype)
 {
   XmlSchemaDatatype sd = (XmlSchemaDatatype)obj;
   Type vt = sd.ValueType;
   // use XmlSchemaDatatype object
       }

XML 스키마 유효성 검사가 수행되면 XmlSchemaType 또는 XmlSchemaDatatype은 읽고 있는 현재 요소에 해당합니다. DTD(Document Type Definition) 유효성 검사가 수행되면 이 속성은 Null 참조(Visual Basic의 경우 Nothing)을 반환합니다.

현재 요소 또는 특성이 min이나 max처럼 간단한 형식에 특수한 유효성 검사 제약 조건을 지정할 수 있는 간단한 형식이면 XmlSchemaDatatype이 반환됩니다.

현재 요소 또는 특성이 사용자 정의 simpleType이면 XmlSchemaSimpleType이 반환됩니다.

현재 요소가 사용자 정의 complexType이면 XmlSchemaComplexType이 반환됩니다. 이 형식은 특성에 의해 반환될 수 없습니다.

참고

ValidationType이 ValidationType.None으로 설정되면 스키마나 DTD로부터 데이터 형식 정보가 제공되지 않습니다.

경고

Close를 호출한 후 SchemaType은 Null을 반환합니다.

예제

다음 예제에서는 XML 문서의 각 요소에 대한 형식 정보를 표시합니다.

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema

public class Sample

  public shared sub Main()
  
  Dim tr as XmlTextReader = new XmlTextReader("booksSchema.xml")
  Dim vr as XmlValidatingReader = new XmlValidatingReader(tr)
 
  vr.Schemas.Add(nothing, "books.xsd")
  vr.ValidationType = ValidationType.Schema
  AddHandler vr.ValidationEventHandler, AddressOf ValidationCallBack

  while(vr.Read())

    if(vr.NodeType = XmlNodeType.Element)
    
      if (vr.SchemaType.ToString() = "System.Xml.Schema.XmlSchemaComplexType")
        Dim sct as XmlSchemaComplexType = CType(vr.SchemaType,XmlSchemaComplexType)
        Console.WriteLine("{0}({1})", vr.Name, sct.Name)
      else      
        Dim value as object = vr.ReadTypedValue()
        Console.WriteLine("{0}({1}):{2}", vr.Name, value.GetType().Name, value)    
      end if
    end if
  end while
  end sub

  private shared sub ValidationCallBack (sender as object, args as ValidationEventArgs)

   Console.WriteLine("***Validation error")
   Console.WriteLine("Severity:{0}", args.Severity)
   Console.WriteLine("Message  :{0}", args.Message)
  end sub
end class
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;

public class Sample{

  public static void Main(){
  
  XmlTextReader tr = new XmlTextReader("booksSchema.xml");
  XmlValidatingReader vr = new XmlValidatingReader(tr);
 
  vr.Schemas.Add(null, "books.xsd");
  vr.ValidationType = ValidationType.Schema;
  vr.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
 
  while(vr.Read()){
    if(vr.NodeType == XmlNodeType.Element){
      if(vr.SchemaType is XmlSchemaComplexType){
        XmlSchemaComplexType sct = (XmlSchemaComplexType)vr.SchemaType;
        Console.WriteLine("{0}({1})", vr.Name, sct.Name);
      }
      else{
        object value = vr.ReadTypedValue();
        Console.WriteLine("{0}({1}):{2}", vr.Name, value.GetType().Name, value);
      }
    }
  }
 }

  private static void ValidationCallBack (object sender, ValidationEventArgs args){
    Console.WriteLine("***Validation error");
    Console.WriteLine("\tSeverity:{0}", args.Severity);
    Console.WriteLine("\tMessage  :{0}", args.Message);
  }
}
#using <System.Xml.dll>
#using <System.dll>

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

public ref class Sample
{
private:
   static void ValidationCallBack( Object^ sender, ValidationEventArgs^ args )
   {
      Console::WriteLine( "***Validation error" );
      Console::WriteLine( "\tSeverity: {0}", args->Severity );
      Console::WriteLine( "\tMessage  : {0}", args->Message );
   }

public:
   static void main()
   {
      XmlTextReader^ tr = gcnew XmlTextReader( "booksSchema.xml" );
      XmlValidatingReader^ vr = gcnew XmlValidatingReader( tr );
      vr->Schemas->Add( nullptr, "books.xsd" );
      vr->ValidationType = ValidationType::Schema;
      vr->ValidationEventHandler += gcnew ValidationEventHandler( Sample::ValidationCallBack );
      while ( vr->Read() )
      {
         if ( vr->NodeType == XmlNodeType::Element )
         {
            if ( dynamic_cast<XmlSchemaComplexType^>(vr->SchemaType) != nullptr )
            {
               XmlSchemaComplexType^ sct = dynamic_cast<XmlSchemaComplexType^>(vr->SchemaType);
               Console::WriteLine( " {0}( {1})", vr->Name, sct->Name );
            }
            else
            {
               Object^ value = vr->ReadTypedValue();
               Console::WriteLine( " {0}( {1}): {2}", vr->Name, value->GetType()->Name, value );
            }
         }
      }
   }
};

int main()
{
   Sample::main();
}
import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Schema.*;

public class Sample
{
    public static void main(String[] args)
    {
        XmlTextReader tr = new XmlTextReader("booksSchema.xml");
        XmlValidatingReader vr = new XmlValidatingReader(tr);

        vr.get_Schemas().Add(null, "books.xsd");
        vr.set_ValidationType(ValidationType.Schema);
        vr.add_ValidationEventHandler(new ValidationEventHandler(
            ValidationCallBack));

        while (vr.Read()) {
            if (vr.get_NodeType().Equals(XmlNodeType.Element)) {
                if (vr.get_SchemaType() instanceof XmlSchemaComplexType) {
                    XmlSchemaComplexType sct = (XmlSchemaComplexType)(
                        vr.get_SchemaType());
                    Console.WriteLine("{0}({1})", vr.get_Name(), sct.get_Name());
                }
                else {
                    Object value = vr.ReadTypedValue();
                    Console.WriteLine("{0}({1}):{2}", vr.get_Name(), 
                        value.GetType().get_Name(), value);
                }
            }
        }
    } //main

    private static void ValidationCallBack(Object sender,
        ValidationEventArgs args)
    {
        Console.WriteLine("***Validation error");
        Console.WriteLine("\tSeverity:{0}", args.get_Severity());
        Console.WriteLine("\tMessage  :{0}", args.get_Message());
    } //ValidationCallBack
} //Sample

이 예제에서는 다음 입력 파일을 사용합니다.

booksSchema.xml

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book genre="autobiography">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>

books.xsd

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

XmlValidatingReader 클래스
XmlValidatingReader 멤버
System.Xml 네임스페이스

기타 리소스

XmlReader로 XML 읽기