다음을 통해 공유


XmlReaderSettings.ConformanceLevel 속성

정의

XmlReader에 적용할 규칙 수준을 가져오거나 설정합니다.

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

속성 값

ConformanceLevel

XML 판독기를 적용할 규칙 수준을 지정하는 열거형 값 중 하나입니다. 기본값은 Document입니다.

예제

다음 예제에서는 XML 조각을 읽는 개체를 만듭니다 XmlReader .

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);
Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

설명

메서드에서 Create 만든 XML 판독기는 기본적으로 다음과 같은 준수 요구 사항을 충족합니다.

  • W3C XML 1.0 권장 사항에 따라 새 줄과 특성 값이 정규화됩니다.

  • 모든 엔터티가 자동으로 확장됩니다.

  • 문서 형식 정의에 선언된 기본 특성은 판독기에서 유효성을 검사하지 않는 경우에도 항상 추가됩니다.

  • 올바른 XML 네임스페이스 URI에 매핑된 XML 접두사 선언이 허용됩니다.

  • 단일 특성 선언 및 NmTokens 단일 NotationType Enumeration 특성 선언의 표기법 이름은 고유합니다.

ConformanceLevel 속성을 사용하여 읽기 중인 스트림이 올바른 형식의 XML 1.0 문서 또는 문서 조각에 대한 규칙을 준수하는지 확인하고 보장할 수 있습니다. 데이터가 준수하지 않으면 예외가 XmlException throw됩니다. 기본값은 (문서 수준 규칙)입니다 ConformanceLevel.Document .

세 가지 규칙 수준은 다음과 같습니다.

설정 설명
Document XML 데이터가 올바른 형식의 XML 1.0 문서에 대한 규칙을 준수하는지 확인합니다. 이 수준의 검사를 통해 모든 프로세서가 올바른 형식의 XML 1.0 문서로 읽는 스트림을 사용할 수 있습니다.

판독기는 다음을 검사합니다.

- 최상위 항목에는 XML 선언, DTD(문서 형식 정의), 요소, 주석, 공백 또는 처리 명령 이외의 노드가 없어야 합니다.
- XML 데이터에는 정확히 하나의 최상위 요소 노드가 있어야 합니다.
Fragment XML 데이터가 올바른 형식의 XML 1.0 문서 조각에 대한 규칙을 준수하는지 확인합니다.

이 설정은 여러 개의 루트 요소가 있는 XML 데이터나 최상위의 텍스트 노드를 허용합니다. 이 수준의 검사는 모든 프로세서가 외부 구문 분석 엔터티로 읽는 스트림을 사용할 수 있는지 확인합니다.
Auto 판독기에서 들어오는 데이터에 따라 규칙 검사 수준을 결정하도록 지정합니다.

XML 데이터가 DTD 정보를 포함하는 경우 문서 규칙 검사가 적용됩니다.

XML 데이터가 다음 중 하나를 포함하는 경우 조각 규칙 검사가 적용됩니다.

- 루트 수준의 텍스트, CDATA 또는 엔터티 참조 노드입니다.
- 루트 수준에서 둘 이상의 요소입니다.
- 루트 수준에 요소가 없습니다.

루트 수준에 텍스트 노드 및 DTD가 있는 경우와 같이 충돌이 있을 경우 XmlException이 throw됩니다.

Create 메서드를 사용하여 기존 XmlReader에 기능을 추가할 때 래핑 시나리오에서 이 설정을 사용할 수 있습니다. 이 경우 ConformanceLevel.Document 새 규칙 검사를 추가하지 않습니다. 규칙 검사는 래핑 중인 XmlReader에 남아 있습니다.

참고

DTD가 있을 경우 XML 1.0 권장 사항에서는 문서 수준 규칙을 요구합니다. 따라서 판독기를 지원 ConformanceLevel.Fragment하도록 구성되었지만 XML 데이터에 DTD(문서 형식 정의)가 포함되어 있으면 throw XmlException 됩니다.

속성 설정 ConformanceLevel 에 따라 판독기에서 특정 규칙 위반을 처리하는 방법은 다음과 같습니다.

조건 Document Fragment Auto
텍스트 또는 형식화된 값이 최상위 수준에 표시됩니다. XmlException 가 throw됩니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다.
최상위 수준에 여러 요소 또는 요소가 표시되지 않습니다. XmlException 가 throw됩니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다.
최상위 항목은 공백입니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다.
최상위 항목은 특성(텍스트 노드로 인식됨)입니다. XmlException 가 throw됩니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다.
인접한 텍스트 노드가 여러 개 있을 경우 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다. 이 설정에 대한 위반으로 간주되지 않습니다.
동일한 네임스페이스 접두사는 동일한 로컬 범위에서 두 번 선언됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.
요소 또는 특성의 네임스페이스가 로컬 범위에 없습니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.
데이터에 접두사 네임스페이스 불일치가 포함됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.
xml:space 특성에 잘못된 값이 포함되어 있습니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.
잘못된 이름이 발견된 경우 XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.
xml 접두사는 URI와 http://www.w3.org/XML/1998/namespace 일치하지 않습니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다. XmlException 가 throw됩니다.

적용 대상

추가 정보