Freigeben über


XmlValidatingReader.ReadTypedValue-Methode

Ruft den Typ der Common Language Runtime für den angegebenen XSD-Typ (XML Schema Definition) ab.

Namespace: System.Xml
Assembly: System.Xml (in system.xml.dll)

Syntax

'Declaration
Public Function ReadTypedValue As Object
'Usage
Dim instance As XmlValidatingReader
Dim returnValue As Object

returnValue = instance.ReadTypedValue
public Object ReadTypedValue ()
public:
Object^ ReadTypedValue ()
public Object ReadTypedValue ()
public function ReadTypedValue () : Object

Rückgabewert

Der Typ der Common Language Runtime für den angegebenen XSD (XML Schema Definition)-Typ.

Hinweise

Hinweis

Die XmlValidatingReader-Klasse ist in Microsoft .NET Framework, Version 2.0 veraltet. Sie können eine Instanz eines validierenden XmlReader mithilfe der XmlReaderSettings-Klasse und der Create-Methode erstellen. Weitere Informationen finden Sie unter Validieren von XML-Daten mit "XmlReader".

Wenn der Schematyp z. B. als xsd:int definiert ist, wird der Laufzeittyp int32 für das Objekt zurückgegeben. Der Typ kann mit der GetType-Methode überprüft und entsprechend umgewandelt werden. Die ReadTypedValue-Methode gibt immer einen Typ zurück, der von der Object-Klasse abgeleitet wurde. Sie gibt nie den Object-Typ zurück.

Wenn der Reader auf einem Attribut positioniert ist, gibt diese Methode das von der Laufzeit typisierte Objekt zurück, ändert jedoch nicht die Position des Readers. Wenn der Reader auf einem Element positioniert ist, liest ReadTypedValue sämtliche CDATA-Knoten, Textknoten, Leerraumknoten, Knoten mit signifikantem Leerraum und Kommentarknoten, gibt das von der Laufzeit typisierte Objekt zurück und positioniert den Reader auf dem Endtag. Sämtliche Typen ohne direkte Zuordnung, z. B. NMTOKENS, werden als Zeichenfolgen zurückgegeben.

Hinweis

Wenn ValidationType auf ValidationType.None festgelegt wurde, liefern weder Schemas noch DTDs (Dokumenttypdefinitionen) Datentypinformationen.

Warnung

Nach dem Aufruf von Close gibt ReadTypedValueNULL (Nothing in Visual Basic) zurück.

Beispiel

Im folgenden Beispiel werden die Typinformationen für die einzelnen Elemente im XML-Dokument angezeigt.

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

Im Beispiel werden die folgenden Eingabedateien verwendet:

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>

Plattformen

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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

XmlValidatingReader-Klasse
XmlValidatingReader-Member
System.Xml-Namespace

Weitere Ressourcen

Lesen von XML mit dem "XmlReader"