XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metoda

Definicja

Odczytuje zawartość jako obiekt określonego typu.Reads the content as an object of the type specified.

public:
 virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual object ReadContentAs (Type returnType, System.Xml.IXmlNamespaceResolver namespaceResolver);
abstract member ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
override this.ReadContentAs : Type * System.Xml.IXmlNamespaceResolver -> obj
Public Overridable Function ReadContentAs (returnType As Type, namespaceResolver As IXmlNamespaceResolver) As Object

Parametry

returnType
Type

Typ wartości, która ma zostać zwrócona.The type of the value to be returned.

Uwaga W przypadku wydania .NET Framework 3,5 wartość parametru returnType może teraz być typem DateTimeOffset.Note With the release of the .NET Framework 3.5, the value of the returnType parameter can now be the DateTimeOffset type.

namespaceResolver
IXmlNamespaceResolver

Obiekt IXmlNamespaceResolver, który jest używany do rozpoznawania wszelkich prefiksów przestrzeni nazw związanych z konwersją typu.An IXmlNamespaceResolver object that is used to resolve any namespace prefixes related to type conversion. Na przykład można go użyć podczas konwertowania obiektu XmlQualifiedName na ciąg xs:.For example, this can be used when converting an XmlQualifiedName object to an xs:string.

Ta wartość może być null.This value can be null.

Zwraca

Dołączona zawartość tekstowa lub wartość atrybutu konwertowana na żądany typ.The concatenated text content or attribute value converted to the requested type.

Wyjątki

Zawartość jest w niepoprawnym formacie dla typu docelowego.The content is not in the correct format for the target type.

Niepoprawna wartość rzutowana jest nieprawidłowa.The attempted cast is not valid.

Wartość returnType jest null.The returnType value is null.

Bieżący węzeł nie jest obsługiwanym typem węzła.The current node is not a supported node type. Szczegółowe informacje znajdują się w tabeli poniżej.See the table below for details.

— lub —-or-

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."

Odczytaj Decimal.MaxValue.Read Decimal.MaxValue.

Przykłady

W poniższym przykładzie zastosowano metodę ReadContentAs, aby zwrócić zawartość elementu Colors do tablicy obiektów String.The following example uses the ReadContentAs method to return the contents of the colors element into an array of string objects.

using (XmlReader reader = XmlReader.Create("dataFile_2.xml")) {
      reader.ReadToDescendant("item");

      reader.MoveToAttribute("colors");
      string[] colors = (string[]) reader.ReadContentAs(typeof(string[]),null);
      foreach (string color in colors) {
         Console.WriteLine("Colors: {0}", color);
      }             		
}
Using reader As XmlReader = XmlReader.Create("dataFile_2.xml")

  reader.ReadToDescendant("item")
              
  reader.MoveToAttribute("colors")
  Dim colors As String() = CType(reader.ReadContentAs(GetType(String()), Nothing), String())
  Dim color As String
  For Each color In  colors
    Console.WriteLine("Colors: {0}", color)
  Next color
          
End Using

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

<root>
  <item sale-item='true' productID='123456' colors='blue green black'>
    <price>9.95</price>
  </item>
  <item sale-item='false' productID='124390'>
    <price>5.95</price>
  </item>
  <item sale-item='true' productID='53298'>
    <price>12.95</price>
  </item>
</root>

Uwagi

Ta metoda odczytuje zawartość tekstową w bieżącym położeniu czytnika i konwertuje ją na żądany typ zwracany.This method reads the text content at the current reader position and converts it to the requested return type. Tekst, biały znak, znaczące białe miejsce i sekcje CDATA są łączone.Text, white space, significant white space and CDATA sections are concatenated. Instrukcje komentarzy i przetwarzania są pomijane, a odwołania do jednostek są automatycznie rozwiązywane.Comments and processing instructions are skipped and entity references are automatically resolved.

Ta metoda jest używana do odczytu, konwersji w razie potrzeby i zwracania elementów wartości niepodzielnych z bieżącej zawartości węzła.This method is used to read, convert if necessary, and return atomic value items from the current node content. Jeśli typ danych wejściowych jest prawidłowym mapowaniem dla typu bieżącego węzła, zwracany jest wystąpienie typu docelowego zawierające wartość bieżącego węzła.If the input type is a valid mappings for the type of the current node then an instance of the target type containing the value of the current node is returned. Listę mapowań domyślnych można znaleźć w sekcji uwagi na stronie odniesienia XmlReader.See the Remarks section in the XmlReader reference page for a list of the default mappings.

Na przykład, jeśli masz następujący tekst XML:For example, if you had the following XML text:

<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>  

Jeśli dane są wpisane i tablica ciągów jest dostarczana do wywołania metody ReadContentAs, wówczas wartości całkowite są konwertowane z ciągów zgodnie z listą prawidłowych mapowań typów CLR.If the data is typed and a string array is supplied to the ReadContentAs method call, then the integer values are converted from strings according to the list of valid CLR type mappings.

Jeśli dane są niewpisane i tablica ciągów jest dostarczana do wywołania metody ReadContentAs, zawartość jest analizowana w oddzielnych ciągach.If the data is untyped and a string array is supplied to the ReadContentAs method call, then the content is parsed into separate strings. Tablica zawierająca dwa ciągi jest zwracana z wartościami "123" i "456".An array containing two strings is returned with the values "123" and "456". Spacje nie są zachowywane z zawartości.The spaces are not preserved from the content.

Ogólnie w przypadku odczytywania danych niez typem zawartość jest analizowana zgodnie z podanym typem.In general when reading untyped data the content is parsed according to the supplied type. Na przykład, jeśli do wywołania metody ReadContentAs zostanie dostarczona tablica liczb całkowitych, ciąg zostanie przeanalizowany do tablicy liczb całkowitych {123,456}.For example, if an integer array is supplied to the ReadContentAs method call then the string is parsed into an array of integers {123,456}.

W poniższym przykładzie tekst XML nie jest rozdzielony spacjamiIn the following example the XML text is not separated by spaces

<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>  

Jeśli zawartość jest bez typu, a tablica ciągów jest dostarczana do wywołania metody ReadContentAs, tablica zawierająca jeden połączony ciąg jest zwracana z wartością "123456789".If the content is untyped and a string array is supplied to the ReadContentAs method call then an array containing one concatenated string is returned with the value "123456789".

W poniższej tabeli opisano, jak ta metoda traktuje każdy typ węzła.The following table describes how this method treats each node type.

XmlNodeTypeXmlNodeType Wartość zwracanaReturn value Zachowanie czytnikaReader behavior
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Dołączona zawartość tekstu, CDATA, białego znaku i znaczących białych węzłów konwertowanych na żądany typ.Concatenated content of text, CDATA, white space and significant white space nodes converted to the requested type. Przenosi do następnego elementu początkowego lub znacznika końca elementu.Moves to the next start element or end element tag. Odwołania do jednostek są automatycznie rozszerzane.Entity references are automatically expanded.
Attribute Analogicznie jak wywołanie XmlConvert.ToXxx w wartości atrybutu.Same as calling XmlConvert.ToXxx on the attribute value. Czytnik pozostaje w bieżącym położeniu.The reader remains in the current position.
Comment

ProcessingInstruction
Ignoruje instrukcję przetwarzania (PI) lub komentarz i odczytuje zawartość połączonego tekstu, która następuje po podanej liczbie PI lub komentarz.Ignores the processing instruction (PI) or comment and reads the concatenated text content that follows the PI or comment. Przenosi do następnego elementu początkowego lub znacznika końca elementu.Moves to the next start element or end element tag. Odwołania do jednostek są automatycznie rozszerzane.Entity references are automatically expanded.
EndElement Pusty ciąg.An empty string. Czytnik pozostaje w bieżącym położeniu.The reader remains in the current position.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Zostanie zgłoszony InvalidOperationException.An InvalidOperationException is thrown. Undefined, chociaż zazwyczaj czytnik pozostaje w bieżącym położeniu.Undefined, although typically the reader remains in the current position.

Aby uzyskać więcej informacji, zobacz sekcję uwagi na stronie informacje referencyjne XmlReader i plik W3C XML schematu część 2: rekomendacja typów danych.For more information, see the Remarks section of the XmlReader reference page and the W3C XML Schema Part 2: Datatypes recommendation.

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

Dotyczy