XmlValidatingReader.ReadTypedValue Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera typ środowiska uruchomieniowego języka wspólnego dla określonego typu języka definicji schematu XML (XSD).
public:
System::Object ^ ReadTypedValue();
public object? ReadTypedValue ();
public object ReadTypedValue ();
member this.ReadTypedValue : unit -> obj
Public Function ReadTypedValue () As Object
Zwraca
Typ środowiska uruchomieniowego języka wspólnego dla określonego typu schematu XML.
Przykłady
Poniższy przykład przedstawia informacje o typie dla każdego elementu w dokumencie XML.
#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();
}
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);
}
}
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
W przykładzie użyto następujących plików wejściowych.
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>
Uwagi
Uwaga
Klasa XmlValidatingReader jest przestarzała w .NET Framework 2.0. Wystąpienie sprawdzania poprawności XmlReader można utworzyć przy użyciu XmlReaderSettings klasy i Create metody . Aby uzyskać więcej informacji, zobacz sekcję Uwagi na stronie referencyjnej XmlReader .
Na przykład jeśli typ schematu jest zdefiniowany jako xsd:int
, typ int32
środowiska uruchomieniowego jest zwracany dla obiektu. Można to przetestować przy użyciu GetType metody i odpowiednio rzutować. Metoda ReadTypedValue zawsze zwraca typ, który pochodzi z Object klasy . Nigdy nie zwraca typu Object .
Jeśli czytnik jest umieszczony w atrybucie, ta metoda zwraca obiekt wpisany w czasie wykonywania, ale nie zmienia położenia czytnika. Jeśli czytnik jest umieszczony na elemecie, ReadTypedValue
odczytuje dowolne dane CDATA, tekst, biały znak, istotne odstępy i węzły komentarzy, zwraca obiekt wpisany w czasie wykonywania i umieszcza czytnik w tagu końcowym. Wszystkie typy, które nie mają bezpośredniego mapowania, na przykład NMTOKENS
, są zwracane jako ciągi.
Uwaga
Jeśli ValidationType ustawiono wartość ValidationType.None, informacje o typie danych nie są dostarczane z definicji schematów lub typów dokumentów (DTD).
Przestroga
Po wywołaniu wywołania CloseReadTypedValue
polecenie zwróci null
wartość .