XmlReader.ReadOuterXml XmlReader.ReadOuterXml XmlReader.ReadOuterXml XmlReader.ReadOuterXml Method

定義

派生クラスでオーバーライドされると、このノードとそのすべての子を表す内容 (マークアップを含む) を読み取ります。When overridden in a derived class, reads the content, including markup, representing this node and all its children.

public:
 virtual System::String ^ ReadOuterXml();
public virtual string ReadOuterXml ();
abstract member ReadOuterXml : unit -> string
override this.ReadOuterXml : unit -> string
Public Overridable Function ReadOuterXml () As String

戻り値

リーダーが要素ノードまたは属性ノードに配置されている場合、このメソッドは、現在のノードおよびそのすべての子の、マークアップを含む、XML の内容をすべて返します。それ以外の場合は、空の文字列を返します。If the reader is positioned on an element or an attribute node, this method returns all the XML content, including markup, of the current node and all its children; otherwise, it returns an empty string.

例外

XML が整形式ではありませんでした。または、XML の解析中にエラーが発生しました。The XML was not well-formed, or an error occurred while parsing the XML.

先行の非同期操作が完了する前に、XmlReader メソッドが呼び出されました。An XmlReader method was called before a previous asynchronous operation finished. この場合、「非同期操作が既に実行されています」というメッセージと共に InvalidOperationException がスローされます。In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

次の例ではReadInnerXmlReadOuterXmlメソッドとメソッドを比較します。The following example compares the ReadInnerXml and ReadOuterXml methods.

// Load the file and ignore all white space.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("2books.xml")) {

  // 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());      

}
' Load the file and ignore all white space.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
Using reader As XmlReader = XmlReader.Create("2books.xml")

  ' 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())

End Using

この例で2books.xmlは、ファイルを入力として使用します。The example uses 2books.xml file as input.

<!--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>

注釈

このメソッドはと似ReadInnerXmlていますが、開始タグと終了タグも返す点が異なります。This method is similar to ReadInnerXml except it also returns the start and end tags.

このメソッドは、要素ノードと属性ノードを次の方法で処理します。This method handles element and attribute nodes in the following manner:

ノード型Node type 呼び出しの前の位置Position before the call XML フラグメントXML fragment 戻り値Return value 呼び出しの後の位置Position After the Call
Element item1 開始タグ上。On the item1 start tag. <item1>text1</item1><item2>text2</item2><item1>text1</item1><item2>text2</item2> <item1>text1</item1><item1>text1</item1> item2 開始タグ上。On the item2 start tag.
Attribute attr1 属性ノード上。On the attr1 attribute node. <item attr1 = "val1" attr2 = "val2" > text</item ><item attr1="val1" attr2="val2">text</item> attr1 = "val1"attr1="val1" attr1 属性ノード上に留まる。Remains on the attr1 attribute node.

リーダーがリーフ ノード上にある場合、ReadOuterXml の呼び出しは Read と同じです。If the reader is positioned on a leaf node, calling ReadOuterXml is equivalent to calling Read. メソッドはをString.Empty返します (属性ノードの場合は、属性マークアップが返されます)。The method returns String.Empty (except for attribute nodes, in which case the attribute markup is returned).

このメソッドは、整形式の XML を確認します。This method checks for well-formed XML. ReadOuterXmlXmlValidatingReaderから呼び出された場合、このメソッドは、返されたコンテンツも検証します。If ReadOuterXml is called from an XmlValidatingReader, this method also validates the content returned

XmlNodeReaderXmlTextReaderおよびクラスXmlValidatingReader で実装されているように、メソッドは名前空間に対応しReadOuterXmlています。As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware. <A xmlns:S="urn:1"><S:B>hello</S:B></A>次の XML テキストがある場合、リーダーがS:B開始タグに配置されて<S:B xmlns:S="urn:1">hello<S:B/>いると、 ReadOuterXmlはを返します。Given the following XML text <A xmlns:S="urn:1"><S:B>hello</S:B></A>, if the reader were positioned on the S:B start tag, ReadOuterXml returns <S:B xmlns:S="urn:1">hello<S:B/>.

このメソッドの非同期バージョンについてはReadOuterXmlAsync、「」を参照してください。For the asynchronous version of this method, see ReadOuterXmlAsync.

適用対象