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 .NET Framework 3.5 teď může být hodnota returnType
parametru typemDateTimeOffset.
- namespaceResolver
- IXmlNamespaceResolver
Objekt IXmlNamespaceResolver , který se používá k překladu předpon oboru názvů souvisejících s převodem typu. Můžete ho například použít při převodu objektu XmlQualifiedName na xs:string
.
Tato hodnota může být null
.
Návraty
Zřetězený textový obsah nebo hodnota atributu převedená 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ý typ uzlu. Podrobnosti jsou v následující tabulce.
-nebo-
XmlReader Před dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace již 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
V příkladu se dataFile_2.xml
soubor používá 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 oddíly 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í typ platným mapováním pro typ aktuálního uzlu, vrátí se instance cílového typu obsahující hodnotu aktuálního uzlu. XmlReader Seznam výchozíchmapováních
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 zadaná 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 řetězcové pole se do volání metody zadává ReadContentAs , obsah se analyzuje do samostatných řetězců. Pole obsahující dva řetězce se vrátí 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 celé číslo, ř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 řetězcové pole je zadáno volání ReadContentAs metody, 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 | Vrácená hodnota | Chování čtenáře |
---|---|---|
Text CDATA Whitespace SignificantWhitespace EntityReference EndEntity |
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ůstává v aktuální pozici. |
Comment ProcessingInstruction |
Přeskočí instrukce pro 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ůstává na aktuální pozici. |
Element XmlDeclaration None Document DocumentType Notation Entity DocumentFragment |
Je InvalidOperationException to vyhozeno. | Nedefinováno, i když čtenář obvykle zůstává v aktuální pozici. |
Další informace najdete v části XmlReader Poznámky na referenční stránce a schématu XML W3C část 2: Doporučení datových typů .
Asynchronní verze této metody naleznete v tématu ReadContentAsAsync.