XmlReader.ReadOuterXml Method

Definition

파생 클래스에서 재정의되면 태그를 포함하여 이 노드 및 모든 자식 노드를 나타내는 콘텐츠를 읽습니다.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

Returns

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.

Exceptions

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이 throw됩니다.In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Examples

다음 예제에서는 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>

Remarks

이 메서드는 시작 및 끝 태그도 반환 하는 것을 제외 하 고 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 > 2</item1 ><item1>text1</item1><item2>text2</item2> <item1 > text1</item1 ><item1>text1</item1> item2 시작 태그에 있습니다.On the item2 start tag.
Attribute attr1 attribute 노드에 있습니다.On the attr1 attribute node. <item attr1 = "val1" attr2 = "val2" > text</item ><item attr1="val1" attr2="val2">text</item> attr1="val1"attr1="val1" attr1 attribute 노드에 남아 있습니다.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. XmlValidatingReader에서 ReadOuterXml를 호출 하는 경우이 메서드는 반환 된 콘텐츠의 유효성도 검사 합니다.If ReadOuterXml is called from an XmlValidatingReader, this method also validates the content returned

XmlNodeReader, XmlTextReaderXmlValidatingReader 클래스에서 구현 되는 ReadOuterXml 메서드는 네임 스페이스를 인식 합니다.As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware. 다음 XML 텍스트 <A xmlns:S="urn:1"><S:B>hello</S:B></A>지정 된 경우 판독기가 S:B 시작 태그에 배치 되 면 ReadOuterXml <S:B xmlns:S="urn:1">hello<S:B/>을 반환 합니다.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.

Applies to