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 | 戻り値 | リーダーの動作 |
---|---|---|
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。