次の方法で共有


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 がスローされます。

Decimal.MaxValue を読み取りました。

次の例では、メソッドを ReadContentAs 使用して、colors 要素の内容を文字列オブジェクトの配列に返します。

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 提供される場合、コンテンツは個別の文字列に解析されます。 2 つの文字列を含む配列は、値 "123" と "456" で返されます。 スペースはコンテンツから保持されません。

一般に、型指定されていないデータを読み取ると、指定された種類に従ってコンテンツが解析されます。 たとえば、整数配列がメソッド呼び出しに ReadContentAs 指定された場合、文字列は整数 {123,456}の配列に解析されます。

次の例では、XML テキストはスペースで区切りません

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

コンテンツが型指定されておらず、文字列配列がメソッド呼び出しに ReadContentAs 指定されている場合、連結された文字列を 1 つ含む配列が値 "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
InvalidOperationException がスローされます。 未定義。ただし、リーダーは通常、現在の位置に留まります。

詳細については、リファレンス ページの XmlReader 「解説」セクションと W3C XML スキーマパート 2: データ型に関する推奨事項を 参照してください。

このメソッドの非同期バージョンについては、次を参照してください ReadContentAsAsync

適用対象