XmlReader.ReadInnerXml 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 veškerý obsah, včetně revizí, jako řetězec.
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
Návraty
Veškerý obsah XML, včetně značek, v aktuálním uzlu. Pokud aktuální uzel nemá žádné podřízené položky, vrátí se prázdný řetězec.
Pokud aktuální uzel není prvek ani atribut, vrátí se prázdný řetězec.
Výjimky
Xml nebyl správně formátován nebo došlo k chybě při analýze XML.
Před XmlReader dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán 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
V příkladu se jako vstup používá 2books.xml soubor.
<!--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 vrátí veškerý obsah aktuálního uzlu včetně revizí. Aktuální uzel (počáteční značka) a odpovídající koncový uzel (koncová značka) se nevrátí. Pokud jste například měli následující:
<node>
this <child id="123"/>
</node>
ReadInnerXml vrací this <child id="123"/>
Tato metoda zpracovává uzly elementů a atributů následujícím způsobem:
| Typ uzlu | Pozice před voláním | Fragment XML | Návratová hodnota | Pozice za voláním |
|---|---|---|---|---|
Element |
item1 Na počáteční značce. |
<item1>text1</item1><item2>text2</item2> | text 1 |
item2 Na počáteční značce. |
Attribute |
Na uzlu atributu attr1 . |
<item attr1="val1" attr2="val2">text</item> | val1 | Zůstane na uzlu atributu attr1 . |
Pokud je čtečka umístěna na uzlu typu list, volání ReadInnerXml je ekvivalentní volání Read. Metoda vrátí String.Empty (s výjimkou uzlů atributů, v takovém případě se vrátí hodnota atributu).
Tato metoda kontroluje formát XML ve správném formátu. Pokud ReadInnerXml je volána z XmlValidatingReader, tato metoda také ověří vrácený obsah.
Jak je implementováno v , XmlNodeReaderXmlTextReader a XmlValidatingReader třídy metoda ReadOuterXml je vědomi oboru názvů.
Asynchronní verzi této metody naleznete v tématu ReadInnerXmlAsync.