XmlReader.ReadInnerXml Metoda

Definicja

Gdy jest zastępowany w klasie pochodnej, odczytuje całą zawartość, w tym znaczniki, jako ciąg.When overridden in a derived class, reads all the content, including markup, as a string.

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

Zwraca

Cała zawartość XML, włącznie z adiustacją, w bieżącym węźle.All the XML content, including markup, in the current node. Jeśli bieżący węzeł nie ma elementów podrzędnych, zwracany jest pusty ciąg.If the current node has no children, an empty string is returned.

Jeśli bieżący węzeł nie jest elementem ani atrybutem, zwracany jest pusty ciąg.If the current node is neither an element nor attribute, an empty string is returned.

Wyjątki

KOD XML nie został poprawnie sformułowany lub wystąpił błąd podczas analizowania kodu XML.The XML was not well-formed, or an error occurred while parsing the XML.

Metoda XmlReader została wywołana przed ukończeniem poprzedniej operacji asynchronicznej.An XmlReader method was called before a previous asynchronous operation finished. W takim przypadku InvalidOperationException jest generowany z komunikatem "asynchroniczna operacja jest już w toku".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Przykłady

Poniższy przykład porównuje metody ReadInnerXml i ReadOuterXml.The following example compares the ReadInnerXml and ReadOuterXml methods.

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

W przykładzie jest użyty plik 2books.xml jako dane wejściowe.The example uses 2books.xml file as input.

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

Uwagi

Ta metoda zwraca całą zawartość bieżącego węzła, w tym znaczników.This method returns all the content of the current node including the markup. Bieżący węzeł (tag początkowy) i odpowiadający mu węzeł końcowy (tag końcowy) nie są zwracane.The current node (start tag) and corresponding end node (end tag) are not returned. Na przykład jeśli masz następujące elementy:For example, if you had the following:

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

ReadInnerXml zwraca this <child id="123"/>ReadInnerXml returns this <child id="123"/>

Ta metoda obsługuje węzły elementów i atrybutów w następujący sposób:This method handles element and attribute nodes in the following manner:

Typ węzłaNode type Umieść przed wywołaniemPosition before the call Fragment XMLXML fragment Wartość zwracanaReturn value Umieść po wywołaniuPosition after the call
Element W tagu początkowym item1.On the item1 start tag. <Item1 — > Tekst1</Item1 ><Item2 — > Tekst2</Item2 ><item1>text1</item1><item2>text2</item2> organizacji1text1 W tagu początkowym item2.On the item2 start tag.
Attribute W węźle atrybutu attr1.On the attr1 attribute node. <Item attr1 = "Val1" attr2 = "val2" > Text</Item ><item attr1="val1" attr2="val2">text</item> Val1val1 Pozostanie w węźle atrybutu attr1.Remains on the attr1 attribute node.

Jeśli czytnik jest umieszczony w węźle liścia, wywołanie ReadInnerXml jest równoważne wywołaniu Read.If the reader is positioned on a leaf node, calling ReadInnerXml is equivalent to calling Read. Metoda zwraca String.Empty (z wyjątkiem węzłów atrybutów, w tym przypadku zwracana jest wartość atrybutu).The method returns String.Empty (except for attribute nodes, in which case the value of the attribute is returned).

Ta metoda sprawdza poprawnie sformułowany kod XML.This method checks for well-formed XML. Jeśli ReadInnerXml jest wywoływana z XmlValidatingReader, ta metoda również sprawdza poprawność zwróconej zawartości.If ReadInnerXml is called from an XmlValidatingReader, this method also validates the content returned.

Zgodnie z implementacją w XmlNodeReader, XmlTextReader i XmlValidatingReader klasy ReadOuterXml Metoda ma świadomość przestrzeni nazw.As implemented in the XmlNodeReader, XmlTextReader and XmlValidatingReader classes the ReadOuterXml method is namespace aware.

Aby uzyskać asynchroniczną wersję tej metody, zobacz ReadInnerXmlAsync.For the asynchronous version of this method, see ReadInnerXmlAsync.

Dotyczy