언어

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

속성 값

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 접두사 선언이 허용됩니다.

  • 단일 NotationType 속성 선언의 표기법 이름과 단일 NmTokens 속성 선언의 표기법 이름은 서로 다릅니다.

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

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

Setting Description
Document XML 데이터가 올바른 형식의 XML 1.0 문서에 대한 규칙을 준수하는지 확인합니다. 이 수준의 확인은 모든 프로세서가 올바른 형식의 XML 1.0 문서로 읽는 스트림을 사용할 수 있도록 합니다.

판독기는 다음을 확인합니다.

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

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

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

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

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

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

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

메모

XML 1.0 권장 사항에는 DTD가 있을 때 문서 수준 준수가 필요합니다. 따라서 판독기가 ConformanceLevel.Fragment를 지원하도록 구성되어 있지만, XML 데이터에 DTD(문서 형식 정의)가 포함되어 있으면 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됩니다.

적용 대상

참고 항목