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 オブジェクト。 たとえば、これは、 XmlQualifiedName オブジェクトを xs:stringに変換するときに使用できます。
この値は、null の場合もあります。
返品
要求された型に変換された連結されたテキスト コンテンツまたは属性値。
例外
コンテンツがターゲットの種類に対して正しい形式ではありません。
試行されたキャストが無効です。
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 | 値を返す | 閲覧者の動作 |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
要求された型に変換されたテキスト、CDATA、空白、および重要な空白ノードの連結されたコンテンツ。 | 次の開始要素または終了要素タグに移動します。 エンティティ参照は自動的に展開されます。 |
Attribute |
属性値に対する XmlConvert.ToXxx の呼び出しと同じです。 |
リーダーは現在の位置に残ります。 |
CommentProcessingInstruction |
処理命令 (PI) またはコメントを無視し、PI またはコメントに続く連結テキスト コンテンツを読み取ります。 | 次の開始要素または終了要素タグに移動します。 エンティティ参照は自動的に展開されます。 |
EndElement |
空の文字列。 | リーダーは現在の位置に残ります。 |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
InvalidOperationExceptionがスローされます。 | 未定義ですが、通常、リーダーは現在の位置に残ります。 |
詳細については、 XmlReader リファレンス ページの「解説」セクションと W3C XML スキーマ パート 2: データ型に関する 推奨事項を参照してください。
このメソッドの非同期バージョンについては、 ReadContentAsAsyncを参照してください。