>  기사  >  백엔드 개발  >  .NET Framework에서 XML 데이터를 쉽게 처리(3-2)

.NET Framework에서 XML 데이터를 쉽게 처리(3-2)

黄舟
黄舟원래의
2016-12-20 14:10:271330검색

ValidationType 속성은 DTD, XSD, XDR 또는 없음 등의 유효성 검사 유형을 설정합니다. 유효성 검사 유형이 지정되지 않은 경우(ValidationType.Auto 옵션 사용) 브라우저는 문서에 따라 가장 적절한 유효성 검사 유형을 자동으로 사용합니다. 유효성 검사 프로세스 중에 오류가 발생하면 ValidationEventHandler 이벤트가 트리거됩니다. ValidationEventHandler 이벤트 핸들러가 제공되지 않으면 XML 예외가 발생합니다. ValidationEventHandler 이벤트 핸들러를 정의하는 것은 XML 소스 파일의 오류로 인해 발생하는 모든 XML 예외를 포착하는 방법입니다. 브라우저의 원칙은 문서의 형식이 올바른지, 스키마를 준수하는지 확인하는 것입니다. 검증된 브라우저가 심각한 형식 오류가 있는 XML 문서를 발견하면 XmlException만 트리거하고 다른 이벤트는 트리거하지 않습니다.

유효성 검사는 사용자가 Read 메서드를 사용하여 포인터를 앞으로 이동할 때 발생합니다. 노드가 구문 분석되고 읽혀지면 유효성 검사를 처리하는 내부 개체가 전달됩니다. 인증 제어는 노드 유형과 요청되는 인증 유형을 기반으로 합니다. 해당 노드와 해당 노드에 포함된 자식 노드의 모든 속성이 검증 조건을 만족하는지 확인합니다.

검증 개체는 내부적으로 DTD 분석기와 스키마 빌더라는 두 가지 도구를 호출합니다. DTD 파서는 DTD를 따르지 않는 현재 노드와 하위 트리의 내용을 살펴봅니다. 스키마 생성기는 XDR 또는 XSD 스키마를 기반으로 현재 노드에 대한 SOM(스키마 개체 모델)을 구축합니다. 스키마 생성기 클래스는 실제로 지정된 모든 XDR 및 XSD 스키마 생성기에 대한 기본 클래스입니다. 왜? XDR 및 XSD 아키텍처의 유사한 방법이 많이 처리되지만 실행 중 성능에는 차이가 없습니다.

??노드에 하위 노드가 있는 경우 다른 임시 브라우저를 사용하여 하위 노드 정보를 수집하면 해당 노드의 스키마 정보를 완전히 확인할 수 있습니다. 그림 5를 볼 수 있습니다.



?? XmlValidatingReader 클래스의 구조 함수는 XmlReader 클래스를 브라우저로 받을 수 있습니다. , 그러나 브라우저는 XmlTextReader 클래스의 인스턴스이거나 해당 파생 클래스 중 하나의 인스턴스만 될 수 있습니다. 이는 XmlReader에서 파생된 다른 클래스(예: 사용자 지정 XML 브라우저)를 사용할 수 없음을 의미합니다. 내부적으로 XmlValidatingReader 클래스는 브라우저가 자식 XmlTextReader 개체라고 가정하고 전달된 브라우저를 XmlTextReader 클래스로 명시적으로 변환합니다. XmlNodeReader 또는 사용자 정의 브라우저를 사용하는 경우 프로그램은 컴파일 중에 오류가 발생하고 런타임에 예외가 발생합니다.


??노드 브라우저

??XML 브라우저는 문서의 내용을 처리하기 위해 증분 방식(한 노드를 하나씩 읽는 방식)을 제공합니다. 지금까지 우리는 소스 파일이 디스크 기반 스트림이거나 문자열 스트림이라고 가정했습니다. 그러나 실제로 소스 파일의 XMLDOM 개체가 제공된다는 보장은 없습니다. 이 경우 특별한 읽기 메소드를 가진 특별한 클래스가 필요합니다. 이러한 상황을 위해 .NET Framework는 XmlNodeReader 클래스를 제공합니다.

XmlTextReader가 지정된 XML 스트림의 모든 노드에 액세스하는 것처럼 XmlNodeReader 클래스는 XMLDOM 하위 트리의 모든 노드에 액세스합니다. XMLDOM 클래스(.NET Framework의 XmlDocument 클래스)는 SelectNodes 메서드 및 SelectSingleNode 메서드와 같은 Xpath 기반 메서드를 지원합니다. 이러한 방법의 목적은 일치하는 노드를 메모리에 배치하는 것입니다. 하위 트리의 모든 노드를 처리해야 하는 경우 노드 브라우저는 노드를 점진적으로 처리하는 브라우저보다 더 효율적입니다.

// xmldomNode는 XML DOM 노드입니다.

XmlNodeReader nodeReader = new XmlNodeReader (xmldomNode);

while (nodeReader.Read())

{

// 여기서 뭔가를 하세요

}

? ?구성 파일(예: web.cofig 파일)에서 사용자 정의 데이터를 참조하려면 먼저 XMLDOM 트리에 데이터를 채운 다음 XmlNodeReader 클래스와 XMLDOM 클래스를 사용하여 데이터를 공동으로 처리합니다. 또한 효율적입니다.


위 내용은 .NET Framework에서 XML 데이터를 쉽게 처리하는 내용(3-2)이며, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.kr)를 참고하시기 바랍니다. .php.cn) !


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.