XmlReader.ReadInnerXml Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Quando substituído em uma classe derivada, lê todo o conteúdo, incluindo a marcação, como uma cadeia de caracteres.
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
Retornos
Todo o conteúdo XML, incluindo a marcação, no nó atual. Se o nó atual não tiver nenhum filho, uma cadeia de caracteres vazia será retornada.
Se o nó atual não for um elemento nem um atributo, uma cadeia de caracteres vazia será retornada.
Exceções
O XML está malformado ou ocorreu um erro ao analisar o XML.
Um método XmlReader foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.
Exemplos
O exemplo a seguir compara os métodos e ReadOuterXml os ReadInnerXml
métodos.
// 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
O exemplo usa o 2books.xml
arquivo como entrada.
<!--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>
Comentários
Esse método retorna todo o conteúdo do nó atual, incluindo a marcação. O nó atual (marca de início) e o nó de fim correspondente (marca de fim) não são retornados. Por exemplo, se você tivesse o seguinte:
<node>
this <child id="123"/>
</node>
ReadInnerXml
retorna this <child id="123"/>
Esse método manipula nós de elemento e atributo da seguinte maneira:
Tipo de nó | Posição antes da chamada | Fragmento XML | Valor retornado | Posição após a chamada |
---|---|---|---|---|
Element |
Na tag de início de item1 . |
<item1>text1text2</item1><item2></item2> | text1 | Na tag de início de item2 . |
Attribute |
No nó de atributo attr1 . |
<item attr1="val1" attr2="val2">text</item> | val1 | Permanece no nó de atributo attr1 . |
Se o leitor estiver posicionado em um nó folha, chamar ReadInnerXml
será o mesmo que chamar Read. O método retorna String.Empty
(exceto para nós de atributo, nesse caso, o valor do atributo é retornado).
Esse método verifica se há XML bem formado. Se ReadInnerXml
for chamado de um XmlValidatingReader, esse método também valida o conteúdo retornado.
Conforme implementado no XmlNodeReadermétodo , XmlTextReader e XmlValidatingReader
classes, o ReadOuterXml
método está ciente do namespace.
Para obter a versão assíncrona deste método, consulte ReadInnerXmlAsync.