XmlValidatingReader 생성자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
XmlValidatingReader
클래스의 새 인스턴스를 초기화합니다.
오버로드
XmlValidatingReader(XmlReader) |
주어진 XmlReader에서 반환된 콘텐츠의 유효성을 검사하는 |
XmlValidatingReader(Stream, XmlNodeType, XmlParserContext) |
지정된 값을 사용하여 |
XmlValidatingReader(String, XmlNodeType, XmlParserContext) |
지정된 값을 사용하여 |
XmlValidatingReader(XmlReader)
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
주어진 XmlReader에서 반환된 콘텐츠의 유효성을 검사하는 XmlValidatingReader
클래스의 새 인스턴스를 초기화합니다.
public:
XmlValidatingReader(System::Xml::XmlReader ^ reader);
public XmlValidatingReader (System.Xml.XmlReader reader);
new System.Xml.XmlValidatingReader : System.Xml.XmlReader -> System.Xml.XmlValidatingReader
Public Sub New (reader As XmlReader)
매개 변수
- reader
- XmlReader
유효성을 검사하는 동안 읽을 XmlReader
입니다. 현재 구현은 XmlTextReader만 지원합니다.
예외
지정된 판독기가 XmlTextReader
가 아닌 경우
예제
다음 예제에서는 두 문서의 유효성을 검사합니다.
#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:
static Boolean m_success = true;
public:
Sample()
{
// Validate the document using an external XSD schema. Validation should fail.
Validate( "notValidXSD.xml" );
// Validate the document using an inline XSD. Validation should succeed.
Validate( "inlineXSD.xml" );
}
private:
// Display the validation error.
void ValidationCallBack( Object^ /*sender*/, ValidationEventArgs^ args )
{
m_success = false;
Console::WriteLine( "\r\n\tValidation error: {0}", args->Message );
}
void Validate( String^ filename )
{
m_success = true;
Console::WriteLine( "\r\n******" );
Console::WriteLine( "Validating XML file {0}", filename );
XmlTextReader^ txtreader = gcnew XmlTextReader( filename );
XmlValidatingReader^ reader = gcnew XmlValidatingReader( txtreader );
// Set the validation event handler
reader->ValidationEventHandler += gcnew ValidationEventHandler( this, &Sample::ValidationCallBack );
// Read XML data
while ( reader->Read() )
{}
Console::WriteLine( "Validation finished. Validation {0}", (m_success == true ? (String^)"successful!" : "failed.") );
// Close the reader.
reader->Close();
}
};
int main()
{
Sample^ validation = gcnew Sample;
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
public class Sample
{
private Boolean m_success = true;
public Sample ()
{
//Validate the document using an external XSD schema. Validation should fail.
Validate("notValidXSD.xml");
//Validate the document using an inline XSD. Validation should succeed.
Validate("inlineXSD.xml");
}
public static void Main ()
{
Sample validation = new Sample();
}
private void Validate(String filename)
{
m_success = true;
Console.WriteLine("\r\n******");
Console.WriteLine("Validating XML file " + filename.ToString());
XmlTextReader txtreader = new XmlTextReader (filename);
XmlValidatingReader reader = new XmlValidatingReader (txtreader);
// Set the validation event handler
reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
// Read XML data
while (reader.Read()){}
Console.WriteLine ("Validation finished. Validation {0}", (m_success==true ? "successful!" : "failed."));
//Close the reader.
reader.Close();
}
//Display the validation error.
private void ValidationCallBack (object sender, ValidationEventArgs args)
{
m_success = false;
Console.WriteLine("\r\n\tValidation error: " + args.Message );
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
public class Sample
private m_success as Boolean = true
public sub New ()
'Validate the document using an external XSD schema. Validation should fail.
Validate("notValidXSD.xml")
'Validate the document using an inline XSD. Validation should succeed.
Validate("inlineXSD.xml")
end sub
public shared sub Main ()
Dim validation as Sample = new Sample()
end sub
private sub Validate(filename as String)
m_success = true
Console.WriteLine()
Console.WriteLine("******")
Console.WriteLine("Validating XML file " + filename.ToString())
Dim txtreader as XmlTextReader = new XmlTextReader (filename)
Dim reader as XmlValidatingReader = new XmlValidatingReader (txtreader)
' Set the validation event handler
AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack
' Read XML data
while (reader.Read())
end while
Console.WriteLine ("Validation finished. Validation {0}", IIf(m_success, "successful!", "failed."))
'Close the reader.
reader.Close()
end sub
'Display the validation error.
Private sub ValidationCallBack (sender as object, args as ValidationEventArgs)
m_success = false
Console.WriteLine()
Console.WriteLine(" Validation error: " + args.Message )
end sub
end class
샘플에서는 다음 입력 파일을 사용합니다.
notValidXSD.xml
<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:bookstore-schema books.xsd">
<book>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
</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>
inlineXSD.xml
<store-data>
<!--Inline XSD schema-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<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="price" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="genre" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
<!-- end of schema -->
<bookstore>
<book genre="novel">
<title>Pride And Prejudice</title>
<price>19.95</price>
</book>
</bookstore>
</store-data>
설명
참고
클래스는 XmlValidatingReader .NET Framework 2.0에서 사용되지 않습니다. 클래스 및 메서드를 XmlReader 사용하여 유효성 검사 인스턴스를 XmlReaderSettingsCreate 만들 수 있습니다. 자세한 내용은 XmlReader 참조 페이지의 설명 섹션을 참조하세요.
지정된 XmlReader
에서 반환된 모든 노드도 이 유효성 검사 판독기에서 반환되므로 프로세스에 정보 손실이 없습니다. 기본 판독기에서 반환되지 않은 새 노드는 이 판독기에서 추가할 수 있습니다(예: 기본 특성 및 엔터티 참조의 자식). 지정된 XmlTextReader
에 설정된 모든 속성은 이 유효성 검사 판독기에도 적용됩니다. 예를 들어 제공된 판독기가 WhitespaceHandling.None을 설정한 경우 이 유효성 검사 판독기는 공백도 무시합니다.
유효성 검사를 위해 외부 DTD(문서 형식 정의) 또는 스키마가 필요한 경우 속성은 XmlResolver 외부 리소스를 확인하는 데 사용할 개체를 설정합니다 XmlResolver .
추가 정보
적용 대상
XmlValidatingReader(Stream, XmlNodeType, XmlParserContext)
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
지정된 값을 사용하여 XmlValidatingReader
클래스의 새 인스턴스를 초기화합니다.
public:
XmlValidatingReader(System::IO::Stream ^ xmlFragment, System::Xml::XmlNodeType fragType, System::Xml::XmlParserContext ^ context);
public XmlValidatingReader (System.IO.Stream xmlFragment, System.Xml.XmlNodeType fragType, System.Xml.XmlParserContext context);
new System.Xml.XmlValidatingReader : System.IO.Stream * System.Xml.XmlNodeType * System.Xml.XmlParserContext -> System.Xml.XmlValidatingReader
Public Sub New (xmlFragment As Stream, fragType As XmlNodeType, context As XmlParserContext)
매개 변수
- xmlFragment
- Stream
구문 분석할 XML 조각을 포함하는 스트림입니다.
- fragType
- XmlNodeType
XML 조각의 XmlNodeType입니다. 이 매개 변수는 조각에 포함되는 내용을 결정합니다(아래 표 참조).
- context
- XmlParserContext
XML 조각을 구문 분석할 XmlParserContext입니다. 사용할 XmlNameTable, 인코딩, 네임스페이스 범위, 현재 xml:lang
및 xml:space
범위가 포함됩니다.
예외
fragType
가 아래 표에 나열된 노드 형식 중 하나가 아닌 경우
설명
참고
클래스는 XmlValidatingReader .NET Framework 2.0에서 사용되지 않습니다. 클래스 및 메서드를 XmlReader 사용하여 유효성 검사 인스턴스를 XmlReaderSettingsCreate 만들 수 있습니다. 자세한 내용은 XmlReader 참조 페이지의 설명 섹션을 참조하세요.
이 생성자는 지정된 문자열을 XML의 조각으로 구문 분석합니다. XML 조각이 요소 또는 특성인 경우 올바른 형식의 XML 문서에 대한 루트 수준 규칙을 무시할 수 있습니다.
다음 표에서는 판독기가 서로 다른 각 노드 형식을 구문 분석하는 방법과 에 대한 fragType
유효한 값을 나열합니다.
XmlNodeType | 조각에 포함할 수 있음 |
---|---|
요소 | 모든 유효한 요소 콘텐츠(예: 요소, 주석, 처리 명령, cdata, 텍스트 및 엔터티 참조의 조합). |
attribute | 특성의 값(따옴표 안의 부분)입니다. |
문서 | 전체 XML 문서의 내용입니다. 이렇게 하면 문서 수준 규칙이 적용됩니다. |
판독기는 다음 단계를 사용하여 스트림의 인코딩을 확인합니다.
XmlParserContext.Encoding 속성을 확인하여 인코딩을 확인합니다.
속성이 인
Encoding
경우 판독기는null
스트림의 시작 부분에서 바이트 순서 표시를 확인합니다.속성이
Encoding
이null
고 바이트 순서 표시를 찾을 수 없는 경우 판독기는 스트림이 UTF-8로 인코딩된 것으로 가정합니다.
이 판독기가 DTD(문서 형식 정의)를 사용하여 유효성을 검사하는 경우(즉, ValidationType ValidationType.DTD 또는 ValidationType.Auto로 설정됨) XmlParserContext
생성자에 지정된 가 필요한 모든 DocumentType 정보를 제공해야 합니다.
참고
DTD를 사용하여 조각의 유효성을 검사할 수 없습니다. 정의상 DTD는 유효성 검사를 위해 전체 문서를 로드해야 합니다.
이 판독기가 XDR(XML-Data 축소) 또는 XSD(XML 스키마 정의 언어) 스키마를 사용하여 유효성을 검사하는 경우 속성을 사용하여 Schemas 스키마가 포함된 를 지정 XmlSchemaCollection 합니다(즉, XmlParserContext
는 DocumentType 정보를 제공할 필요가 없음).
추가 정보
적용 대상
XmlValidatingReader(String, XmlNodeType, XmlParserContext)
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
- Source:
- XmlValidatingReader.cs
지정된 값을 사용하여 XmlValidatingReader
클래스의 새 인스턴스를 초기화합니다.
public:
XmlValidatingReader(System::String ^ xmlFragment, System::Xml::XmlNodeType fragType, System::Xml::XmlParserContext ^ context);
public XmlValidatingReader (string xmlFragment, System.Xml.XmlNodeType fragType, System.Xml.XmlParserContext context);
new System.Xml.XmlValidatingReader : string * System.Xml.XmlNodeType * System.Xml.XmlParserContext -> System.Xml.XmlValidatingReader
Public Sub New (xmlFragment As String, fragType As XmlNodeType, context As XmlParserContext)
매개 변수
- xmlFragment
- String
구문 분석할 XML 조각을 포함하는 문자열입니다.
- fragType
- XmlNodeType
XML 조각의 XmlNodeType입니다. 이 매개 변수는 조각에 포함되는 내용도 결정합니다(아래 표 참조).
- context
- XmlParserContext
XML 조각을 구문 분석할 XmlParserContext입니다. 사용할 NameTable, 인코딩, 네임스페이스 범위, 현재 xml:lang 및 xml:space 범위가 포함됩니다.
예외
fragType
가 아래 표에 나열된 노드 형식 중 하나가 아닌 경우
예제
다음 예제에서는 XML 조각을 읽습니다. 및 를 사용하여 XmlParserContext
네임스페이 XmlNamespaceManager 스 일치를 처리합니다.
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlTextReader reader = null;
try
{
//Create the XML fragment to be parsed.
string xmlFrag = "<book> " +
"<title>Pride And Prejudice</title>" +
"<bk:genre>novel</bk:genre>" +
"</book>";
//Create the XmlNamespaceManager that is used to
//look up namespace information.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("bk", "urn:sample");
//Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
//Implement the reader.
reader = new XmlTextReader(xmlFrag, XmlNodeType.Element, context);
//Parse the XML fragment. If they exist, display the
//prefix and namespace URI of each element.
while (reader.Read())
{
if (reader.IsStartElement())
{
if (string.IsNullOrEmpty(reader.Prefix))
{
Console.WriteLine("<{0}>", reader.LocalName);
}
else
{
Console.Write("<{0}:{1}>", reader.Prefix, reader.LocalName);
Console.WriteLine(" The namespace URI is " + reader.NamespaceURI);
}
}
}
}
finally
{
if (reader != null)
reader.Close();
}
}
} // End class
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim reader As XmlTextReader = Nothing
Try
'Create the XML fragment to be parsed.
Dim xmlFrag As String = "<book> " & _
"<title>Pride And Prejudice</title>" & _
"<bk:genre>novel</bk:genre>" & _
"</book>"
'Create the XmlNamespaceManager that is used to
'look up namespace information.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("bk", "urn:sample")
'Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)
'Implement the reader.
reader = New XmlTextReader(xmlFrag, XmlNodeType.Element, context)
'Parse the XML fragment. If they exist, display the
'prefix and namespace URI of each element.
While reader.Read()
If reader.IsStartElement() Then
If reader.Prefix = String.Empty Then
Console.WriteLine("<{0}>", reader.LocalName)
Else
Console.Write("<{0}:{1}>", reader.Prefix, reader.LocalName)
Console.WriteLine(" The namespace URI is " & reader.NamespaceURI)
End If
End If
End While
Finally
If Not (reader Is Nothing) Then
reader.Close()
End If
End Try
End Sub
End Class
설명
참고
클래스는 XmlValidatingReader .NET Framework 2.0에서 사용되지 않습니다. 클래스 및 메서드를 XmlReader 사용하여 유효성 검사 인스턴스를 XmlReaderSettingsCreate 만들 수 있습니다. 자세한 내용은 XmlReader 참조 페이지의 설명 섹션을 참조하세요.
이 생성자는 지정된 문자열을 XML의 조각으로 구문 분석합니다. XML 조각이 요소 또는 특성인 경우 올바른 형식의 XML 문서에 대한 루트 수준 규칙을 무시할 수 있습니다. 이 생성자는 에서 ReadInnerXml반환된 문자열을 처리할 수 있습니다.
다음 표에서는 판독기가 서로 다른 각 노드 형식을 구문 분석하는 방법과 에 대한 fragType
유효한 값을 나열합니다.
XmlNodeType | 조각에 포함할 수 있음 |
---|---|
요소 | 모든 유효한 요소 콘텐츠(예: 요소, 주석, 처리 명령, cdata, 텍스트 및 엔터티 참조의 조합). |
attribute | 특성의 값(따옴표 안의 부분)입니다. |
문서 | 전체 XML 문서의 내용입니다. 이렇게 하면 문서 수준 규칙이 적용됩니다. |
이 판독기가 DTD(문서 형식 정의)를 사용하여 유효성을 검사하는 경우(즉, ValidationType ValidationType.DTD 또는 ValidationType.Auto로 설정됨) XmlParserContext
생성자에 지정된 가 필요한 모든 DocumentType 정보를 제공해야 합니다.
참고
DTD를 사용하여 조각의 유효성을 검사할 수 없습니다. 정의상 DTD는 유효성 검사를 위해 전체 문서를 로드해야 합니다.
이 판독기가 XDR(XML-Data 축소) 또는 XSD(XML 스키마 정의 언어) 스키마를 사용하여 유효성을 검사하는 경우 속성을 사용하여 Schemas 스키마가 포함된 를 지정 XmlSchemaCollection 합니다( XmlParserContext
는 DocumentType 정보를 제공할 필요가 없음).
추가 정보
적용 대상
.NET