次の方法で共有


XmlValidatingReader.ReadString メソッド

要素ノードまたはテキスト ノードの内容を文字列として読み取ります。

Overrides Public Function ReadString() As String
[C#]
public override string ReadString();
[C++]
public: String* ReadString();
[JScript]
public override function ReadString() : String;

戻り値

要素ノードまたはテキスト ノードの内容。要素ノードまたはテキスト ノード以外にリーダーが配置されている場合、または返す対象となるテキストの内容が現在のコンテキスト内にこれ以上ない場合は、これが空の文字列になる場合があります。

メモ: テキスト ノードは、要素ノードまたは属性ノードのいずれかにできます。

解説

要素に配置すると、 ReadString は、すべてのテキスト、有意な空白、空白、および CData セクション ノード型を連結し、連結したデータを要素の内容として返します。リーダーは、マークアップが検出されると中断します。これは、混合コンテンツ モデル内で、または要素終了タグが読み取られるときに、発生する可能性があります。

テキスト ノードに配置されると、 ReadString は、テキスト ノードから要素終了タグへの連結を実行します。リーダーが属性テキスト ノードに配置されている場合、 ReadString は、リーダーが要素開始タグに配置されている場合と同じ機能を持ちます。連結された要素テキスト ノードをすべて返します。

EntityHandling は、 ReadString がどのように機能するかを次のように決定します。

説明
ExpandEntities 展開された文字と一般エンティティを返します。これは既定値です。
ExpandCharEntities 一般エンティティ参照を含まないテキストの内容を返します。これは、一般エンティティが ReadString を中断することを意味します。エンティティ参照を参照しに行くには、Read を呼び出す必要があります。

使用例

[Visual Basic, C#, C++] 各要素のテキストの内容を表示する例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
   
   Public Shared Sub Main()
      Dim txtreader As XmlTextReader = Nothing
      Dim reader As XmlValidatingReader = Nothing
      
      Try
         'Implement the readers.
         txtreader = New XmlTextReader("elems.xml")
         reader = New XmlValidatingReader(txtreader)
         
         'Parse the XML and display the text content of each of the elements.
         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())  'Handle nested elements.
                    Console.WriteLine()
                    Console.Write("<{0}>", reader.Name)
                  End If
                  Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
               End If
            End If
         End While      
      
      Finally
         If Not (reader Is Nothing) Then
            reader.Close()
         End If
      End Try
   End Sub 'Main 
End Class 'Sample

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample 
{
  public static void Main()
  {
    XmlTextReader txtreader = null;
    XmlValidatingReader reader = null;

    try
    {
       //Implement the readers.
       txtreader = new XmlTextReader("elems.xml");
       reader = new XmlValidatingReader(txtreader);
  
       //Parse the XML and display the text content of each of the elements.
       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.
           }
         }
       } 
       
     } 

     finally 
     {
        if (reader != null)
          reader.Close();
      }
  }
  
} // End class

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main()
{
   XmlTextReader* txtreader = 0;
   XmlValidatingReader* reader = 0;

   try
   {
      //Implement the readers.
      txtreader = new XmlTextReader(S"elems.xml");
      reader = new XmlValidatingReader(txtreader);

      //Parse the XML and display the text content of each of the elements.
      while (reader->Read()){
         if (reader->IsStartElement()){
            if (reader->IsEmptyElement)
               Console::WriteLine(S"<{0}/>",reader->Name);
            else{
               Console::Write(S"<{0}> ",reader->Name);
               reader->Read(); //Read the start tag.
               if (reader->IsStartElement())  //Handle nested elements.
                  Console::Write(S"\r\n<{0}>",reader->Name);
               Console::WriteLine(reader->ReadString());  //Read the text content of the element.
            }
         }
      } 

   } 

   __finally 
   {
      if (reader != 0)
         reader->Close();
   }
}

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

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

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

XmlValidatingReader クラス | XmlValidatingReader メンバ | System.Xml 名前空間