次の方法で共有


XmlReader.ReadOuterXml メソッド

派生クラスでオーバーライドされると、このノードとそのすべての子を表す内容 (マークアップを含む) を読み取ります。

Public Overridable Function ReadOuterXml() As String
[C#]
public virtual string ReadOuterXml();
[C++]
public: virtual String* ReadOuterXml();
[JScript]
public function ReadOuterXml() : String;

戻り値

リーダーが要素ノードまたは属性ノードに配置されている場合、このメソッドは、現在のノードおよびそのすべての子の、マークアップを含む、XML の内容をすべて返します。それ以外の場合は、空の文字列を返します。

例外

例外の種類 条件
XmlException XML が整形式ではありませんでした。または、XML の解析中にエラーが発生しました。

解説

このメソッドは、開始タグと終了タグを返す点を除くと、 ReadInnerXml に似ています。

このメソッドは、要素ノードおよび属性ノードを次の方法で処理します。

ノード型 呼び出し前の位置 XML フラグメント 戻り値 呼び出し後の位置
Element item1 開始タグ上。 <item1>text1</item1><item2>text2</item2> <item1>text1</item1> item2 開始タグ上。
Attribute attr1 属性ノード上。 <item attr1="val1" attr2="val2">text</item> attr1="val1" attr1 属性ノードに残しておきます。

リーダーをリーフ ノードに配置すると、 ReadOuterXml の呼び出しは、 Read の呼び出しに等しくなります。

このメソッドは、整形式の XML かどうかをチェックします。 ReadOuterXmlXmlValidatingReader から呼び出された場合、返された内容も検証します。

ReadOuterXml メソッドは、 XmlNodeReader クラス、 XmlTextReader クラス、および XmlValidatingReader クラスで実装されるため、名前空間を認識します。XML テキスト <A xmlns:S="urn:1"><S:B>hello</S:B></A> を指定した場合、リーダーを S:B 開始タグ上に配置すると、 ReadOuterXml<S:B xmlns:S="urn:1">hello<S:B/> を返します。

使用例

[Visual Basic, C#, C++] ReadInnerXml メソッドと ReadOuterXml メソッドを比較する例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml

'Reads an XML file

public class Sample

  private const filename as string = "2books.xml"

  public shared Sub Main()

    Dim reader as XmlTextReader = Nothing

    try    
    
     ' Load the file and ignore all white space.
     reader = new XmlTextReader(filename)
     reader.WhitespaceHandling = WhitespaceHandling.None

     ' Moves the reader to the root element.
     reader.MoveToContent()
 
     ' Moves to book node.
     reader.Read()

     ' Note that ReadInnerXml only returns the markup of the node's children
     ' so the book's attributes are not returned.
     Console.WriteLine("Read the first book using ReadInnerXml...")
     Console.WriteLine(reader.ReadInnerXml())

     ' ReadOuterXml returns the markup for the current node and its children
     ' so the book's attributes are also returned.
     Console.WriteLine("Read the second book using ReadOuterXml...")
     Console.WriteLine(reader.ReadOuterXml())            
        
    finally
      if Not reader Is Nothing
        reader.Close()
      End if
    End try

  End Sub
End class

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

//Reads an XML fragment

public class Sample
{
  private const String filename = "2books.xml";

  public static void Main()
  {
    XmlTextReader reader = null;

    try
    {          
       // Load the file and ignore all white space.
       reader = new XmlTextReader(filename);
       reader.WhitespaceHandling = WhitespaceHandling.None;

       // Moves the reader to the root element.
       reader.MoveToContent();
 
       // Moves to book node.
       reader.Read(); 

       // Note that ReadInnerXml only returns the markup of the node's children
       // so the book's attributes are not returned.
       Console.WriteLine("Read the first book using ReadInnerXml...");
       Console.WriteLine(reader.ReadInnerXml());

       // ReadOuterXml returns the markup for the current node and its children
       // so the book's attributes are also returned.
       Console.WriteLine("Read the second book using ReadOuterXml...");
       Console.WriteLine(reader.ReadOuterXml());                    

    }
    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;

//Reads an XML fragment


int main()
{
   XmlTextReader* reader = 0;
   String* filename = S"2books.xml";

   try
   {          
      // Load the file and ignore all white space.
      reader = new XmlTextReader(filename);
      reader->WhitespaceHandling = WhitespaceHandling::None;

      // Moves the reader to the root element.
      reader->MoveToContent();

      // Moves to book node.
      reader->Read(); 

      // Note that ReadInnerXml only returns the markup of the node's children
      // so the book's attributes are not returned.
      Console::WriteLine(S"Read the first book using ReadInnerXml...");
      Console::WriteLine(reader->ReadInnerXml());

      // ReadOuterXml returns the markup for the current node and its children
      // so the book's attributes are also returned.
      Console::WriteLine(S"Read the second book using ReadOuterXml...");
      Console::WriteLine(reader->ReadOuterXml());                    

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

[Visual Basic, C#, C++] この例では、入力として、 2books.xml というファイルを使用しています。

[VB, C#]
<!--sample XML fragment-->
<bookstore>
  <book genre='novel' ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <book genre='novel' ISBN='1-861001-57-5'>
    <title>Pride And Prejudice</title>
    <price>24.95</price>
  </book>
</bookstore>

[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 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

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