次の方法で共有


XmlReader.MoveToContent メソッド

定義

現在のノードがコンテンツ (空白でないテキスト、CDATAElementEndElementEntityReference、または EndEntity) ノードかどうかを確認します。 ノードがコンテンツ ノードでない場合、リーダーは、次のコンテンツ ノードまたはファイルの末尾までスキップします。 リーダーは、ProcessingInstructionDocumentTypeCommentWhitespace、または SignificantWhitespace の型のノードをスキップします。

public:
 virtual System::Xml::XmlNodeType MoveToContent();
public virtual System.Xml.XmlNodeType MoveToContent ();
abstract member MoveToContent : unit -> System.Xml.XmlNodeType
override this.MoveToContent : unit -> System.Xml.XmlNodeType
Public Overridable Function MoveToContent () As XmlNodeType

戻り値

XmlNodeType

メソッドが見つけた現在のノードの NodeType。リーダーが入力ストリームの末尾に到達した場合は XmlNodeType.None

例外

入力ストリームで、正しくない XML が検出されました。

先行の非同期操作が完了する前に、XmlReader メソッドが呼び出されました。 この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。

これは、ランダムな XML マークアップを中断せずにスキップできるコードを記述する場合に便利です。 たとえば、次のコードがあるとします。

if ( reader->MoveToContent() == XmlNodeType::Element &&
   reader->Name->Equals( "price" ) )
{
   _price = reader->ReadString();
}
if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "price")
 {
    _price = reader.ReadString();
 }
If reader.MoveToContent() = XmlNodeType.Element And reader.Name = "price" Then
    _price = reader.ReadString()
End If

このコードでは、中断することなく次の入力を処理できます。

<price>123.4</price>

および

<?xml version="1.0"><!DOCTYPE price SYSTEM
  "abc"><price>123.4</price>

および

<?xml version="1.0"><!DOCTYPE price SYSTEM "abc"
  [<!ENTITY p
  "123.4">]><price>&p;</price>

および

<!-- some test comment --><?processing
  instruction?><price>123.4</price>

注釈

現在のノードが属性ノードの場合、このメソッドはリーダーを属性を所有する要素に戻します。

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

適用対象