XmlReader.ReadOuterXml Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě přečte obsah včetně značek představující tento uzel a všechny jeho podřízené položky.
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
Návraty
Pokud je čtečka umístěna na elementu nebo uzel atributu, vrátí tato metoda veškerý obsah XML, včetně značek, aktuálního uzlu a všech jeho podřízených položek; v opačném případě vrátí prázdný řetězec.
Výjimky
Xml nebyl správně vytvořen nebo došlo k chybě při analýze XML.
XmlReader Metoda byla volána před dokončením předchozí asynchronní operace. V tomto případě InvalidOperationException se vyvolá zpráva "Asynchronní operace už probíhá".
Příklady
Následující příklad porovnává metody ReadInnerXml
a ReadOuterXml
metody.
// 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
Příklad používá 2books.xml
soubor jako vstup.
<!--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>
Poznámky
Tato metoda se podobá kromě ReadInnerXml toho, že vrátí také počáteční a koncové značky.
Tato metoda zpracovává uzly elementů a atributů následujícím způsobem:
Typ uzlu | Pozice před voláním | Fragment XML | Vrácená hodnota | Pozice po volání |
---|---|---|---|---|
Element |
item1 Na počáteční značce. |
<item1>text1text2</item1><item2></item2> | <item1>text1</item1> | item2 Na počáteční značce. |
Attribute |
Na uzlu atributu attr1 . |
<item attr1="val1" attr2="val2">text</item> | attr1="val1" | Zůstane na uzlu atributu attr1 . |
Pokud je čtečka umístěna na listovém uzlu, volání ReadOuterXml
je ekvivalentní volání Read. Metoda vrátí String.Empty
(s výjimkou uzlů atributů, v takovém případě se vrátí značka atributu).
Tato metoda kontroluje správně formátovaný XML. Pokud ReadOuterXml
se volá z objektu XmlValidatingReader, tato metoda také ověří vrácený obsah.
Jak je implementováno XmlNodeReaderv a XmlValidatingReader
XmlTextReader třídy ReadOuterXml
metody je znám obor názvů. Pokud byla čtečka umístěna na S:B
počáteční značce, ReadOuterXml
vrátí <S:B xmlns:S="urn:1">hello<S:B/>
následující text <A xmlns:S="urn:1"><S:B>hello</S:B></A>
XML .
Asynchronní verze této metody naleznete v tématu ReadOuterXmlAsync.