XmlReader.ReadOuterXml Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Liest beim Überschreiben in einer abgeleiteten Klasse den Inhalt (einschließlich Markup) ab, der diesen Knoten und alle untergeordneten Elemente darstellt.
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
Gibt zurück
Wenn der Reader auf einem Elementknoten oder einem Attributknoten positioniert ist, gibt diese Methode den gesamten XML-Inhalt (einschließlich Markup) des aktuellen Knotens sowie aller untergeordneten Elemente zurück. Andernfalls wird eine leere Zeichenfolge zurückgegeben.
Ausnahmen
Das XML war nicht wohlgeformt, oder bei der XML-Analyse ist ein Fehler aufgetreten.
Eine XmlReader-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.
Beispiele
Im folgenden Beispiel werden die ReadInnerXml
Methoden und ReadOuterXml
verglichen.
// 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
Im Beispiel wird die Datei als Eingabe verwendet 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>
Hinweise
Diese Methode ähnelt mit der ReadInnerXml Ausnahme, dass sie auch die Start- und Endtags zurückgibt.
Diese Methode behandelt Element- und Attributknoten wie folgt:
Knotentyp | Position vor dem Anruf | XML-Fragment | Rückgabewert | Position nach dem Anruf |
---|---|---|---|---|
Element |
Auf dem item1 -Starttag. |
<item1>text1</item1><item2>text2</item2> | <item1>text1</item1> | Auf dem item2 -Starttag. |
Attribute |
Auf dem attr1 -Attributknoten. |
<item attr1="val1" attr2="val2">text</item> | attr1="val1" | Verbleibt auf dem attr1 -Attributknoten. |
Wenn der Reader auf einem Endknoten positioniert ist, entspricht das Aufrufen von ReadOuterXml
dem Aufrufen von Read. Die Methode gibt zurück String.Empty
(mit Ausnahme von Attributknoten, in diesem Fall wird das Attributmarkup zurückgegeben).
Mit dieser Methode wird auf wohlgeformte XML-Daten überprüft. Wenn ReadOuterXml
von einer XmlValidatingReaderaufgerufen wird, überprüft diese Methode auch den zurückgegebenen Inhalt.
Wie in den XmlNodeReaderKlassen und implementiert, XmlTextReaderXmlValidatingReader
ist die ReadOuterXml
Methode namespacefähig. Wenn der Reader auf dem Starttag positioniert wurde, ReadOuterXml
wird aufgrund des S:B
folgenden XML-Texts <A xmlns:S="urn:1"><S:B>hello</S:B></A>
zurückgegeben<S:B xmlns:S="urn:1">hello<S:B/>
.
Die asynchrone Version dieser Methode finden Sie unter ReadOuterXmlAsync.