Поделиться через


XmlReader.ReadInnerXml Метод

Определение

Когда переопределено в производном классе, считывает как строку все содержимое, включая разметку.

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

Возвращаемое значение

Все содержимое XML-кода в текущем узле, включая разметку. Если текущий узел не имеет дочерних узлов, возвращается пустая строка.

Если текущий узел не является элементом или атрибутом, возвращается пустая строка.

Исключения

Неправильный формат XML, или при синтаксическом анализе XML произошла ошибка.

Метод XmlReader вызван перед завершением предыдущей асинхронной операции. В этом случае возникает исключение InvalidOperationException с сообщением "Асинхронная операция уже выполняется".

Примеры

В следующем примере сравниваются методы ReadInnerXml и ReadOuterXml .

// 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 файл.

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

Комментарии

Этот метод возвращает все содержимое текущего узла, включая разметку. Текущий узел (открывающий тег) и соответствующий ему конечный узел (закрывающий тег) не возвращаются. Например, если у вас было следующее:

<node>
 this <child id="123"/>
</node>

ReadInnerXml возвращает this <child id="123"/>

Этот метод обрабатывает узлы элементов и атрибутов следующим образом:

Тип узла Позиция перед вызовом XML-фрагмент Возвращаемое значение Позиция после вызова
Element В открывающем теге item1. <item1>text1</item1><item2>text2</item2> text1 В открывающем теге item2.
Attribute В узле атрибута attr1. <item attr1="val1" attr2="val2">text</item> val1 Остается в узле атрибута attr1.

Если модуль чтения располагается в конечном узле, вызов метода ReadInnerXml будет равносилен вызову метода Read. Метод возвращает String.Empty (за исключением узлов атрибутов, в этом случае возвращается значение атрибута).

Этот метод проверяет наличие правильного формата XML. Если ReadInnerXml вызывается из XmlValidatingReader, этот метод также проверяет возвращенное содержимое.

Как реализовано в классах XmlNodeReaderReadOuterXml , XmlTextReader и XmlValidatingReader метод учитывает пространство имен.

Асинхронную версию этого метода см. в разделе ReadInnerXmlAsync.

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