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 かどうかをチェックします。 ReadOuterXml が XmlValidatingReader から呼び出された場合、返された内容も検証します。
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