XmlValidatingReader.ValidationType プロパティ
実行する検証のタイプを示す値を取得します。
Public Property ValidationType As ValidationType
[C#]
public ValidationType ValidationType {get; set;}
[C++]
public: __property ValidationType get_ValidationType();public: __property void set_ValidationType(ValidationType);
[JScript]
public function get ValidationType() : ValidationType;public function set ValidationType(ValidationType);
プロパティ値
ValidationType 値の 1 つ。このプロパティを設定しないと、既定により ValidationType.Auto が設定されます。
例外
例外の種類 | 条件 |
---|---|
InvalidOperationException | Read を呼び出した後、このプロパティを設定。 |
解説
Read を最初に呼び出す前に、このプロパティを設定する必要があります。このプロパティを ValidationType.None に設定すると、非検証リーダーが作成されます。
検証に外部 DTD またはスキーマが必要な場合は、 XmlResolver が使用されます。
詳細については、「 XmlValidatingReader を使用した XML の検証 」および「 XmlValidatingReader による検証の種類 」を参照してください。
使用例
[Visual Basic, C#, C++] 2 つのファイルを検証する例を次に示します。
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports Microsoft.VisualBasic
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 'New
Public Shared Sub Main()
Dim validation As New Sample()
End Sub 'Main
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 'Validate
'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 'ValidationCallBack
End Class 'Sample
[C#]
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);
}
}
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;
public __gc class Sample
{
private:
XmlTextReader* txtreader;
XmlValidatingReader* reader;
Boolean m_success;
public:
Sample ()
{
txtreader = 0;
reader = 0;
m_success = true;
String* doc1 = S"notValid.xml";
String* doc2 = S"cdDTD.xml";
String* doc3 = S"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 = 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(S"\nParsing XML file {0}", filename);
else{
Console::WriteLine(S"\nValidating XML file {0}", filename);
m_success = true;
//Set the validation event handler.
reader->ValidationEventHandler += new ValidationEventHandler (this, &Sample::ValidationCallBack);
}
// Read XML data
while (reader->Read()){}
if (vt==ValidationType::None)
Console::WriteLine(S"Finished parsing file.");
else
Console::WriteLine (S"Validation finished. Validation {0}", m_success ? S"successful" : S"failed");
}
__finally
{
//Close the reader.
if (reader != 0)
reader->Close();
}
}
//Display the validation errors.
void ValidationCallBack (Object* /*sender*/, ValidationEventArgs* args)
{
m_success = false;
Console::Write(S"\r\n\tValidation error: {0}", args->Message);
}
};
int main ()
{
new Sample();
}
[Visual Basic, C#, C++] このサンプルでは、次の 4 つの入力ファイルを使用します。
[Visual Basic, C#, C++] notValid.xml ("x-schema:" プリフィックスは、リーダーの XDR スキーマを識別します。)
<?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>
[Visual Basic, C#, C++] 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>
[Visual Basic, C#, C++] 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>
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
XmlValidatingReader クラス | XmlValidatingReader メンバ | System.Xml 名前空間