Sdílet prostřednictvím


XmlReader.ReadOuterXml Metoda

Definice

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

String

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.

Platí pro