XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metoda

Definicja

Odczytuje zawartość jako obiekt określonego typu.

public:
 virtual System::Object ^ ReadContentAs(Type ^ returnType, System::Xml::IXmlNamespaceResolver ^ namespaceResolver);
public virtual 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.

Uwaga Wraz z wydaniem programu .NET Framework 3.5 wartość returnType parametru może być teraz typem DateTimeOffset .

namespaceResolver
IXmlNamespaceResolver

Obiekt używany do rozpoznawania IXmlNamespaceResolver wszelkich prefiksów przestrzeni nazw związanych z konwersją typów. Można to na przykład użyć podczas konwertowania XmlQualifiedName obiektu na xs:stringobiekt .

Ta wartość może mieć wartość null.

Zwraca

Połączona zawartość tekstowa lub wartość atrybutu przekonwertowana na żądany typ.

Wyjątki

Zawartość nie jest w poprawnym formacie dla typu docelowego.

Próba rzutowania jest nieprawidłowa.

Wartość returnType to null.

Bieżący węzeł nie jest obsługiwanym typem węzła. Szczegółowe informacje znajdują się w tabeli poniżej.

— lub —

Metoda XmlReader została wywołana przed zakończeniem poprzedniej operacji asynchronicznej. W takim przypadku InvalidOperationException jest zgłaszany komunikat "Operacja asynchroniczna jest już w toku".

Przeczytaj Decimal.MaxValue.

Przykłady

W poniższym przykładzie użyto ReadContentAs metody , aby zwrócić zawartość elementu colors do tablicy obiektów ciągów.

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 użyto dataFile_2.xml pliku jako danych wejściowych.

<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ą na bieżącej pozycji czytnika i konwertuje ją na żądany typ zwracany. Tekst, biały znak, znaczące odstępy i sekcje CDATA są łączone. Komentarze i instrukcje przetwarzania są pomijane, a odwołania do jednostek są automatycznie rozwiązywane.

Ta metoda służy do odczytywania, konwertowania w razie potrzeby i zwracania elementów wartości niepodzielnej z bieżącej zawartości węzła. Jeśli typ danych wejściowych jest prawidłowym mapowaniem typu bieżącego węzła, zwracane jest wystąpienie typu docelowego zawierającego wartość bieżącego węzła. Zobacz sekcję Uwagi na stronie referencyjnej XmlReader , aby uzyskać listę mapowań domyślnych.

Jeśli na przykład masz następujący tekst XML:

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

Jeśli dane są wpisywane, a tablica ciągów jest dostarczana do ReadContentAs wywołania metody, wartości całkowite są konwertowane z ciągów zgodnie z listą prawidłowych mapowań typów CLR.

Jeśli dane są nietypowe, a tablica ciągów jest dostarczana do ReadContentAs wywołania metody, zawartość jest analizowana na oddzielne ciągi. Tablica zawierająca dwa ciągi jest zwracana z wartościami "123" i "456". Spacje nie są zachowywane z zawartości.

Ogólnie rzecz biorąc podczas odczytywania nietypowych danych zawartość jest analizowana zgodnie z podanym typem. Jeśli na przykład do wywołania metody jest dostarczana ReadContentAs tablica całkowita, ciąg jest analizowany w tablicy liczb całkowitych {123,456}.

W poniższym przykładzie tekst XML nie jest oddzielony spacjami

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

Jeśli zawartość jest nietypowa, a tablica ciągów jest dostarczana do ReadContentAs wywołania metody, zostanie zwrócona tablica zawierająca jeden połączony ciąg z wartością "123456789".

W poniższej tabeli opisano sposób traktowania poszczególnych typów węzłów przez tę metodę.

XmlNodeType Wartość zwracana Zachowanie czytelnika
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Połączona zawartość tekstu, CDATA, biały znak i znaczące węzły odstępu przekonwertowane na żądany typ. Przechodzi do następnego elementu początkowego lub tagu elementu końcowego. Odwołania do jednostek są automatycznie rozszerzane.
Attribute Tak samo jak wywołanie XmlConvert.ToXxx wartości atrybutu. Czytelnik pozostaje w bieżącej pozycji.
Comment

ProcessingInstruction
Ignoruje instrukcję przetwarzania (PI) lub komentarz i odczytuje połączoną zawartość tekst, która jest zgodna z danymi pi lub komentarzem. Przechodzi do następnego elementu początkowego lub tagu elementu końcowego. Odwołania do jednostek są automatycznie rozszerzane.
EndElement Pusty ciąg. Czytelnik pozostaje w bieżącej pozycji.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Jest InvalidOperationException zgłaszany. Niezdefiniowane, chociaż zazwyczaj czytelnik pozostaje na bieżącym stanowisku.

Aby uzyskać więcej informacji, zobacz sekcję Uwagi na stronie referencyjnej XmlReader i zalecenie Schemat XML W3C Part 2: Datatypes .

Aby uzyskać asynchroniczną wersję tej metody, zobacz ReadContentAsAsync.

Dotyczy