XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 형식의 개체로 콘텐츠를 읽습니다.
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 형식 변환과 관련된 네임스페이스 접두사를 확인하는 데 사용되는 개체입니다. 예를 들어 개체xs:string를 .로 변환할 XmlQualifiedName 때 사용할 수 있습니다.
이 값은 null일 수 있습니다.
반품
연결된 텍스트 콘텐츠 또는 요청된 형식으로 변환된 특성 값입니다.
예외
콘텐츠가 대상 형식에 대한 올바른 형식이 아닙니다.
시도한 캐스트가 잘못되었습니다.
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 | 반환 값 | 판독기 동작 |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
요청된 형식으로 변환된 텍스트, CDATA, 공백 및 중요한 공백 노드의 연결된 콘텐츠입니다. | 다음 시작 요소 또는 끝 요소 태그로 이동합니다. 엔터티 참조는 자동으로 확장됩니다. |
Attribute |
특성 값을 호출 XmlConvert.ToXxx 하는 것과 같습니다. |
판독기는 현재 위치에 남아 있습니다. |
CommentProcessingInstruction |
PI(처리 명령) 또는 주석을 무시하고 PI 또는 주석 뒤에 연결된 텍스트 콘텐츠를 읽습니다. | 다음 시작 요소 또는 끝 요소 태그로 이동합니다. 엔터티 참조는 자동으로 확장됩니다. |
EndElement |
빈 문자열입니다. | 판독기는 현재 위치에 남아 있습니다. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
throw InvalidOperationException 됩니다. | 일반적으로 판독기는 현재 위치에 남아 있지만 정의되지 않습니다. |
자세한 내용은 참조 페이지의 설명 섹션 XmlReader 과 W3C XML 스키마 파트 2: 데이터 형식 권장 사항을 참조하세요 .
이 메서드의 비동기 버전은 다음을 참조하세요 ReadContentAsAsync.