다음을 통해 공유


XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) 메서드

정의

지정한 형식의 개체로 콘텐츠를 읽습니다.

public:
 virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver? namespaceResolver);
abstract member ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
override this.ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function ReadContentAs (returnType As Type, namespaceResolver As IXmlNamespaceResolver) As Object

매개 변수

returnType
Type

반환될 값의 형식입니다.

참고 .NET Framework 3.5 릴리스에서는 returnType 매개 변수 값이 DateTimeOffset 형식이 될 수 있습니다.

namespaceResolver
IXmlNamespaceResolver

형식 변환과 관련된 모든 네임스페이스 접두사를 확인하는 IXmlNamespaceResolver 개체입니다. 예를 들어, XmlQualifiedName 개체를 xs:string으로 변환할 때 이 개체를 사용할 수 있습니다.

이 값은 null일 수 있습니다.

반환

Object

요청된 형식으로 변환된 특성 값 또는 연결된 텍스트 콘텐츠입니다.

예외

콘텐츠가 대상 형식에 맞지 않는 형식인 경우

시도된 캐스팅이 잘못된 경우

returnType 값이 null입니다.

현재 노드가 지원되는 노드 형식이 아닌 경우. 자세한 내용은 아래 표를 참조하십시오.

또는

이전 비동기 작업이 완료되기 전에 XmlReader 메서드가 호출되었습니다. 이 경우 “비동기 작업이 이미 진행 중입니다.” 메시지를 나타내며 InvalidOperationException이 throw됩니다.

Decimal.MaxValue를 읽는 경우

예제

다음 예제에서는 메서드를 ReadContentAs 사용 하 여 문자열 개체의 배열에 색 요소의 내용을 반환 합니다.

using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
      reader.ReadToDescendant("item");

      reader.MoveToAttribute("colors");
      string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
      foreach (string color in colors) {
         Console.WriteLine("Colors: {0}", color);
      }             		
}
Using reader As XmlReader = XmlReader.Create("dataFile_2.xml")

  reader.ReadToDescendant("item")
              
  reader.MoveToAttribute("colors")
  Dim colors As String() = CType(reader.ReadContentAs(GetType(String()), Nothing), String())
  Dim color As String
  For Each color In  colors
    Console.WriteLine("Colors: {0}", color)
  Next color
          
End Using

이 예제에서는 dataFile_2.xml 파일을 입력으로 사용합니다.

<root>
  <item sale-item='true' productID='123456' colors='blue green black'>
    <price>9.95</price>
  </item>
  <item sale-item='false' productID='124390'>
    <price>5.95</price>
  </item>
  <item sale-item='true' productID='53298'>
    <price>12.95</price>
  </item>
</root>

설명

이 메서드는 현재 판독기 위치에서 텍스트 콘텐츠를 읽고 요청된 반환 형식으로 변환합니다. 텍스트, 공백, 상당한 공백 및 CDATA 섹션이 연결됩니다. 주석 및 처리 지침은 건너뛰고 엔터티 참조는 자동으로 해결됩니다.

이 메서드는 필요한 경우 읽고 변환하고 현재 노드 콘텐츠에서 원자성 값 항목을 반환하는 데 사용됩니다. 입력 형식이 현재 노드 형식에 대한 유효한 매핑인 경우 현재 노드의 값을 포함하는 대상 형식의 인스턴스가 반환됩니다. 기본 매핑 목록은 참조 페이지의 설명 섹션 XmlReader 을 참조하세요.

예를 들어 다음 XML 텍스트가 있는 경우

<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>

데이터를 입력하고 문자열 배열을 메서드 호출에 ReadContentAs 제공하는 경우 정수 값은 유효한 CLR 형식 매핑 목록에 따라 문자열에서 변환됩니다.

데이터가 형식화되지 않고 문자열 배열이 메서드 호출에 ReadContentAs 제공되면 콘텐츠가 별도의 문자열로 구문 분석됩니다. 두 개의 문자열이 포함된 배열은 값 "123" 및 "456"과 함께 반환됩니다. 공간은 콘텐츠에서 유지되지 않습니다.

일반적으로 형식화되지 않은 데이터를 읽을 때 콘텐츠는 제공된 형식에 따라 구문 분석됩니다. 예를 들어 정수 배열이 메서드 호출에 ReadContentAs 제공되면 문자열이 정수 배열로 구문 분석됩니다 {123,456}.

다음 예제에서 XML 텍스트는 공백으로 구분되지 않습니다.

<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>

콘텐츠가 형식화되지 않고 문자열 배열이 메서드 호출에 ReadContentAs 제공되면 연결된 문자열 하나를 포함하는 배열이 "123456789" 값과 함께 반환됩니다.

다음 표에서는 이 메서드가 각 노드 형식을 처리하는 방법을 설명합니다.

XmlNodeType 반환 값 판독기 동작
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
요청된 형식으로 변환된 텍스트, CDATA, 공백 및 중요한 공백 노드의 연결된 콘텐츠입니다. 다음 시작 요소 또는 끝 요소 태그로 이동합니다. 엔터티 참조는 자동으로 확장됩니다.
Attribute 특성 값을 호출 XmlConvert.ToXxx 하는 것과 같습니다. 판독기는 현재 위치에 남아 있습니다.
Comment

ProcessingInstruction
PI(처리 명령) 또는 주석을 무시하고 PI 또는 주석 뒤에 연결된 텍스트 콘텐츠를 읽습니다. 다음 시작 요소 또는 끝 요소 태그로 이동합니다. 엔터티 참조는 자동으로 확장됩니다.
EndElement 빈 문자열입니다. 판독기는 현재 위치에 남아 있습니다.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Throw InvalidOperationException 됩니다. 일반적으로 판독기는 현재 위치에 유지되지만 정의되지 않습니다.

자세한 내용은 참조 페이지의 설명 섹션 XmlReaderW3C XML 스키마 2부: Datatypes 권장 사항을 참조하세요.

이 메서드의 비동기 버전은 다음을 참조하세요 ReadContentAsAsync.

적용 대상