XmlReader.ReadOuterXml Метод

Определение

Когда переопределено в производном классе, считывает содержимое, включая разметку, представляющую этот узел и все его дочерние узлы.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."

Примеры

В следующем примере сравниваются методы ReadInnerXml и ReadOuterXml.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 File в качестве входных данных.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 > Текст1</Item1 ><Item2 > Текст2</Item2 ><item1>text1</item1><item2>text2</item2> <Item1 > Текст1</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. Если ReadOuterXml вызывается из XmlValidatingReader, этот метод также проверяет возвращаемое содержимое.If ReadOuterXml is called from an XmlValidatingReader, this method also validates the content returned

Как реализовано в классах XmlNodeReader, XmlTextReader и XmlValidatingReader, метод 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.

Применяется к