XmlReader.IsEmptyElement プロパティ

定義

派生クラスでオーバーライドされると、現在のノードが空の要素 (たとえば、 <MyElement/>) であるかどうかを示す値を取得します。

public:
 abstract property bool IsEmptyElement { bool get(); };
public abstract bool IsEmptyElement { get; }
member this.IsEmptyElement : bool
Public MustOverride ReadOnly Property IsEmptyElement As Boolean

プロパティ値

true現在のノードが、NodeTypeで終わる要素 (XmlNodeType.Element/> と等しい) である場合は >。それ以外の場合はfalse

例外

前の非同期操作が完了する前に、 XmlReader メソッドが呼び出されました。 この場合、"非同期操作は既に進行中です" というメッセージで InvalidOperationException がスローされます。

次の例では、各要素のテキスト コンテンツを表示します。

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
                {
                    Console.WriteLine("<{0}/>", reader.Name);
                }
                else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  }
}
While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

この例では、 elems.xmlファイルを入力として使用します。

<book>
  <title>Pride And Prejudice</title>
  <price>19.95</price>
  <misc/>
</book>

注釈

このプロパティを使用すると、次の違いを確認できます。

<item num="123"/> (IsEmptyElementtrue)。

<item num="123"></item> (要素の内容は空ですが、IsEmptyElementfalse)。

対応する EndElement ノードは、空の要素に対して生成されません。

スキーマ検証のために既定のコンテンツが要素に追加された場合でも、 IsEmptyElementtrueを返します。 要素に既定値があるかどうかには関係ありません。 つまり、 IsEmptyElement は、ソース ドキュメント内の要素に終了要素タグがあるかどうかを報告するだけです。

適用対象