XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přečte obsah jako objekt zadaného 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 hodnoty, která se má vrátit.
Poznámka S vydáním rozhraní .NET Framework 3.5 teď může být hodnota returnType parametru typem DateTimeOffset .
- namespaceResolver
- IXmlNamespaceResolver
Objekt IXmlNamespaceResolver , který se používá k překladu předpon oboru názvů souvisejících s převodem typů. To lze například použít při převodu XmlQualifiedName objektu na objekt .xs:string
Tato hodnota může být null.
Návraty
Zřetězený textový obsah nebo hodnota atributu byla převedena na požadovaný typ.
Výjimky
Obsah není ve správném formátu pro cílový typ.
Pokus o přetypování není platný.
Hodnota returnType je null.
Aktuální uzel není podporovaným typem uzlu. Podrobnosti jsou v následující tabulce.
nebo
Před XmlReader dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už probíhá".
Číst Decimal.MaxValue.
Příklady
Následující příklad používá metodu ReadContentAs k vrácení obsahu prvku colors do pole řetězcových objektů.
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
Příklad používá dataFile_2.xml soubor jako vstup.
<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>
Poznámky
Tato metoda přečte textový obsah na aktuální pozici čtenáře a převede ho na požadovaný návratový typ. Text, prázdné znaky, významné prázdné znaky a sekce CDATA jsou zřetězeny. Komentáře a pokyny ke zpracování se přeskočí a odkazy na entity se automaticky přeloží.
Tato metoda se používá ke čtení, převodu v případě potřeby a vrácení položek atomické hodnoty z aktuálního obsahu uzlu. Pokud je vstupním typem platné mapování pro typ aktuálního uzlu, vrátí se instance cílového typu obsahující hodnotu aktuálního uzlu. Seznam výchozích mapování najdete v části Poznámky na XmlReader referenční stránce.
Pokud jste například měli následující text XML:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Pokud jsou data zadána a řetězcové pole je zadáno volání ReadContentAs metody, pak celočíselné hodnoty jsou převedeny z řetězců podle seznamu platných mapování typů CLR.
Pokud jsou data nezadaná a do volání metody je zadáno ReadContentAs pole řetězců, obsah se analyzuje do samostatných řetězců. Vrátí se pole obsahující dva řetězce s hodnotami 123 a 456. Mezery se neuchovávají z obsahu.
Obecně platí, že při čtení nezatypovaných dat se obsah analyzuje podle zadaného typu. Pokud je například do volání metody zadáno ReadContentAs celočíselné pole, řetězec se analyzuje do pole celých čísel {123,456}.
V následujícím příkladu není text XML oddělen mezerami.
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
Pokud je obsah nezadaná a do volání metody je zadáno ReadContentAs pole řetězců, vrátí se pole obsahující jeden zřetězený řetězec s hodnotou "123456789".
Následující tabulka popisuje, jak tato metoda zpracovává jednotlivé typy uzlů.
| Xmlnodetype | Návratová hodnota | Chování čtenáře |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Zřetězený obsah textu, CDATA, prázdného místa a významných uzlů prázdných znaků převedených na požadovaný typ. | Přesune se na další počáteční prvek nebo značku koncového prvku. Odkazy na entity se automaticky rozbalí. |
Attribute |
Stejné jako volání XmlConvert.ToXxx hodnoty atributu. |
Čtenář zůstane v aktuální pozici. |
CommentProcessingInstruction |
Ignoruje instrukce zpracování (PI) nebo komentář a přečte zřetězený textový obsah, který následuje za PI nebo komentářem. | Přesune se na další počáteční prvek nebo značku koncového prvku. Odkazy na entity se automaticky rozbalí. |
EndElement |
Prázdný řetězec. | Čtenář zůstane v aktuální pozici. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Je InvalidOperationException vyvolán. | Nedefinováno, i když čtenář obvykle zůstává na aktuální pozici. |
Další informace naleznete v části XmlReader Poznámky na referenční stránce a schématu W3C XML část 2: Doporučení datových typů .
Asynchronní verzi této metody naleznete v tématu ReadContentAsAsync.