XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 Po wydaniu .NET Framework 3.5 wartość parametru returnType
może być teraz typemDateTimeOffset.
- namespaceResolver
- IXmlNamespaceResolver
IXmlNamespaceResolver Obiekt używany do rozpoznawania wszelkich prefiksów przestrzeni nazw związanych z konwersją typu. Można to na przykład użyć podczas konwertowania XmlQualifiedName obiektu na ciąg xs:string
.
Ta wartość może być następująca 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ść elementu 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 tym 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 kolorów 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 odstęp, znaczne 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 niepodzielnych 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 zostanie dostarczona ReadContentAs tablica całkowita, ciąg zostanie przeanalizowany 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, tablica zawierająca jeden połączony ciąg jest zwracana 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, odstępu i znaczących węzłów odstępów przekonwertowanych 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 w bieżącej pozycji. |
Aby uzyskać więcej informacji, zobacz sekcję Uwagi na stronie referencyjnej XmlReader i rekomendację W3C XML Schema Part 2: Datatypes (Schemat XML W3C— część 2: zalecenia dotyczące typów danych ).
Aby uzyskać asynchroniczną wersję tej metody, zobacz ReadContentAsAsync.