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 . |
Если средство чтения размещается на конечном узле, вызов эквивалентен вызову ReadInnerXmlRead. Метод возвращает ( String.Empty за исключением узлов атрибутов, в этом случае возвращается значение атрибута).
Этот метод проверяет наличие хорошо сформированного XML. Если ReadInnerXml вызывается из XmlValidatingReaderметода, этот метод также проверяет возвращенное содержимое.
Как реализовано в XmlNodeReaderфайле , XmlTextReader и XmlValidatingReader классы ReadOuterXml , которые метод учитывает пространство имен.
Сведения об асинхронной версии этого метода см. в разделе ReadInnerXmlAsync.