XmlValidatingReader.ValidationType Właściwość
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 lub ustawia wartość wskazującą typ weryfikacji do wykonania.
public:
property System::Xml::ValidationType ValidationType { System::Xml::ValidationType get(); void set(System::Xml::ValidationType value); };
public System.Xml.ValidationType ValidationType { get; set; }
member this.ValidationType : System.Xml.ValidationType with get, set
Public Property ValidationType As ValidationType
Wartość właściwości
Jedna z ValidationType wartości. Jeśli ta właściwość nie jest ustawiona, wartość domyślna to ValidationType.Auto.
Wyjątki
Ustawianie właściwości po wywołaniu funkcji Odczyt.
Przykłady
Poniższy przykład weryfikuje dwa pliki.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;
public ref class Sample
{
private:
XmlTextReader^ txtreader;
XmlValidatingReader^ reader;
Boolean m_success;
public:
Sample()
{
txtreader = nullptr;
reader = nullptr;
m_success = true;
String^ doc1 = "notValid.xml";
String^ doc2 = "cdDTD.xml";
String^ doc3 = "book1.xml";
//Parse the files and validate when requested.
Validate( doc1, ValidationType::XDR ); //Validation should fail.
Validate( doc2, ValidationType::DTD ); //Validation should fail.
Validate( doc3, ValidationType::None ); //No validation performed.
}
private:
void Validate( String^ filename, ValidationType vt )
{
try
{
//Implement the readers. Set the ValidationType.
txtreader = gcnew XmlTextReader( filename );
reader = gcnew XmlValidatingReader( txtreader );
reader->ValidationType = vt;
//If the reader is set to validate, set the event handler.
if ( vt == ValidationType::None )
Console::WriteLine( "\nParsing XML file {0}", filename );
else
{
Console::WriteLine( "\nValidating XML file {0}", filename );
m_success = true;
//Set the validation event handler.
reader->ValidationEventHandler += gcnew ValidationEventHandler( this, &Sample::ValidationCallBack );
}
// Read XML data
while ( reader->Read() )
{}
if ( vt == ValidationType::None )
Console::WriteLine( "Finished parsing file." );
else
Console::WriteLine( "Validation finished. Validation {0}", m_success ? (String^)"successful" : "failed" );
}
finally
{
//Close the reader.
if ( reader != nullptr )
reader->Close();
}
}
//Display the validation errors.
void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ args )
{
m_success = false;
Console::Write( "\r\n\tValidation error: {0}", args->Message );
}
};
int main()
{
gcnew Sample;
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
public class Sample
{
private const String doc1 = "notValid.xml";
private const String doc2 = "cdDTD.xml";
private const String doc3 = "book1.xml";
private XmlTextReader txtreader = null;
private XmlValidatingReader reader = null;
private Boolean m_success = true;
public Sample ()
{
//Parse the files and validate when requested.
Validate(doc1, ValidationType.XDR); //Validation should fail.
Validate(doc2, ValidationType.DTD); //Validation should fail.
Validate(doc3, ValidationType.None); //No validation performed.
}
public static void Main ()
{
Sample validation = new Sample();
}
private void Validate(String filename, ValidationType vt)
{
try
{
//Implement the readers. Set the ValidationType.
txtreader = new XmlTextReader(filename);
reader = new XmlValidatingReader(txtreader);
reader.ValidationType = vt;
//If the reader is set to validate, set the event handler.
if (vt==ValidationType.None)
{
Console.WriteLine("\nParsing XML file " + filename.ToString());
}
else
{
Console.WriteLine("\nValidating XML file " + filename.ToString());
m_success = true;
//Set the validation event handler.
reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
}
// Read XML data
while (reader.Read()){}
if (vt==ValidationType.None)
Console.WriteLine("Finished parsing file.");
else
Console.WriteLine ("Validation finished. Validation {0}", (m_success==true ? "successful" : "failed"));
}
finally
{
//Close the reader.
if (reader != null)
reader.Close();
}
}
//Display the validation errors.
private void ValidationCallBack (object sender, ValidationEventArgs args)
{
m_success = false;
Console.Write("\r\n\tValidation error: " + args.Message);
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Public Class Sample
Private doc1 As String = "notValid.xml"
Private doc2 As String = "cdDTD.xml"
Private doc3 As String = "book1.xml"
Private txtreader As XmlTextReader = Nothing
Private reader As XmlValidatingReader = Nothing
Private m_success As Boolean = True
Public Sub New()
'Parse the files and validate when requested.
Validate(doc1, ValidationType.XDR) 'Validation should fail.
Validate(doc2, ValidationType.DTD) 'Validation should fail.
Validate(doc3, ValidationType.None) 'No validation performed.
End Sub
Public Shared Sub Main()
Dim validation As New Sample()
End Sub
Private Sub Validate(filename As String, vt As ValidationType)
Try
'Implement the readers. Set the ValidationType.
txtreader = New XmlTextReader(filename)
reader = New XmlValidatingReader(txtreader)
reader.ValidationType = vt
'If the reader is set to validate, set the event handler.
If vt = ValidationType.None Then
Console.WriteLine(ControlChars.Cr & "Parsing XML file " & filename.ToString())
Else
Console.WriteLine(ControlChars.Cr & "Validating XML file " & filename.ToString())
m_success = True
'Set the validation event handler.
AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack
End If
' Read XML data
While reader.Read()
End While
If vt = ValidationType.None Then
Console.WriteLine("Finished parsing file.")
Else
Console.WriteLine("Validation finished. Validation {0}", IIf(m_success, "successful", "failed"))
End If
Finally
'Close the reader.
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
'Display the validation errors.
Private Sub ValidationCallBack(sender As Object, args As ValidationEventArgs)
m_success = False
Console.Write(ControlChars.CrLf & ControlChars.Tab & "Validation error: " & args.Message)
End Sub
End Class
W przykładzie użyto następujących czterech plików wejściowych:
notValid.xml
(Prefiks "x-schema:" identyfikuje schemat XML-Data Zredukowany (XDR) dla czytnika.
<?xml version='1.0'?>
<bookstore xmlns="x-schema:schema1.xdr">
<book genre="novel" style="hardcover">
<title>The Handmaid's Tale</title>
<author>
<first-name>Margaret</first-name>
<last-name>Atwood</last-name>
</author>
<price>19.95</price>
</book>
<book genre="novel" style="other">
<title>The Poisonwood Bible</title>
<author>
<first-name>Barbara</first-name>
<last-name>Kingsolver</last-name>
</author>
<price>11.99</price>
</book>
</bookstore>
schema1.xdr
<?xml version="1.0"?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="first-name" content="textOnly"/>
<ElementType name="last-name" content="textOnly"/>
<ElementType name="name" content="textOnly"/>
<ElementType name="price" content="textOnly" dt:type="fixed.14.4"/>
<ElementType name="author" content="eltOnly" order="one">
<group order="seq">
<element type="name"/>
</group>
<group order="seq">
<element type="first-name"/>
<element type="last-name"/>
</group>
</ElementType>
<ElementType name="title" content="textOnly"/>
<AttributeType name="genre" dt:type="string"/>
<AttributeType name="style" dt:type="enumeration"
dt:values="paperback hardcover"/>
<ElementType name="book" content="eltOnly">
<attribute type="genre" required="yes"/>
<attribute type="style" required="yes"/>
<element type="title"/>
<element type="author"/>
<element type="price"/>
</ElementType>
<ElementType name="bookstore" content="eltOnly">
<element type="book"/>
</ElementType>
</Schema>
cdDTD.xml
<!--XML file using a DTD-->
<!DOCTYPE bookstore [
<!ELEMENT bookstore (cd)*>
<!ELEMENT cd (title,artist,price)>
<!ATTLIST cd genre CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT artist (#PCDATA)>
<!ELEMENT price (#PCDATA)>]>
<bookstore>
<cd genre="alternative" ISBN="2-3631-4">
<title>Americana</title>
<artist>Offspring</artist>
<price>16.95</price>
</cd>
</bookstore>
book1.xml
<?xml version='1.0' ?>
<!DOCTYPE book [<!ENTITY h 'hardcover'>]>
<book>
<title>Pride And Prejudice</title>
<misc>&h;</misc>
</book>
Uwagi
Uwaga
Klasa XmlValidatingReader jest przestarzała w .NET Framework 2.0. Wystąpienie weryfikacji XmlReader można utworzyć przy użyciu XmlReaderSettings klasy i Create metody . Aby uzyskać więcej informacji, zobacz sekcję Uwagi na stronie referencyjnej XmlReader .
Tę właściwość należy ustawić przed pierwszym wywołaniem metody Read. Ustawienie tej właściwości na ValidationType.None powoduje utworzenie czytnika, który nie jest prawidłowy.
Jeśli do weryfikacji są potrzebne definicje typów dokumentów zewnętrznych (DTD) lub schematy, XmlResolver jest on używany.