XmlReader.ReadInnerXml Metod

Definition

När det åsidosättas i en härledd klass läser allt innehåll, inklusive markering, som en sträng.

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

Returer

Allt XML-innehåll, inklusive markering, i den aktuella noden. Om den aktuella noden inte har några underordnade, returneras en tom sträng.

Om den aktuella noden varken är ett element eller attribut returneras en tom sträng.

Undantag

XML-koden var inte korrekt utformad, eller så uppstod ett fel när XML-koden tolkades.

En XmlReader metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".

Exempel

I följande exempel jämförs ReadInnerXml metoderna och 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

I exemplet används 2books.xml filen som indata.

<!--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>

Kommentarer

Den här metoden returnerar allt innehåll i den aktuella noden, inklusive markering. Den aktuella noden (starttaggen) och motsvarande slutnod (sluttagg) returneras inte. Om du till exempel hade följande:

<node>
 this <child id="123"/>
</node>

ReadInnerXml returnerar this <child id="123"/>

Den här metoden hanterar element- och attributnoder på följande sätt:

Nodtyp Position före samtalet XML-fragment Returvärde Position efter samtalet
Element På starttaggen item1 . <item1>text1</item1><item2>text2</item2> text1 På starttaggen item2 .
Attribute På attributnoden attr1 . <item attr1="val1" attr2="val2">text</item> val1 Finns kvar på attributnoden attr1 .

Om läsaren är placerad på en lövnod motsvarar anropet ReadInnerXml .Read Metoden returnerar String.Empty (med undantag för attributnoder, i vilket fall värdet för attributet returneras).

Den här metoden söker efter välformulerad XML. Om ReadInnerXml anropas från en XmlValidatingReadervaliderar den här metoden även innehållet som returneras.

Som implementerats i XmlNodeReader- XmlTextReader och XmlValidatingReader -klasserna ReadOuterXml är metoden namnområdesmedveten.

Den asynkrona versionen av den här metoden finns i ReadInnerXmlAsync.

Gäller för