XmlReaderSettings.ConformanceLevel 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
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 접두사 선언이 허용됩니다.
단일 특성 선언 및
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됩니다. |