XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Leest de inhoud als een object van het opgegeven type.
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
Parameters
- returnType
- Type
Het type van de waarde dat moet worden geretourneerd.
Note Met de release van het .NET Framework 3.5 kan de waarde van de parameter returnType nu het type DateTimeOffset zijn.
- namespaceResolver
- IXmlNamespaceResolver
Een IXmlNamespaceResolver object dat wordt gebruikt om naamruimtevoorvoegsels met betrekking tot typeconversie op te lossen. Dit kan bijvoorbeeld worden gebruikt bij het converteren van een XmlQualifiedName object naar een xs:string.
Deze waarde kan zijn null.
Retouren
De samengevoegde tekstinhoud of kenmerkwaarde geconverteerd naar het aangevraagde type.
Uitzonderingen
De inhoud heeft niet de juiste indeling voor het doeltype.
De poging tot cast is ongeldig.
De returnType waarde is null.
Het huidige knooppunt is geen ondersteund knooppunttype. Zie de onderstaande tabel voor meer informatie.
– of –
Er XmlReader is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.
Lezen Decimal.MaxValue.
Voorbeelden
In het volgende voorbeeld wordt de ReadContentAs methode gebruikt om de inhoud van het kleurenelement te retourneren in een matrix met tekenreeksobjecten.
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
In het voorbeeld wordt het dataFile_2.xml bestand als invoer gebruikt.
<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>
Opmerkingen
Deze methode leest de tekstinhoud op de huidige positie van de lezer en converteert deze naar het aangevraagde retourtype. Tekst, witruimte, significante witruimte en CDATA-secties worden samengevoegd. Opmerkingen en verwerkingsinstructies worden overgeslagen en entiteitsverwijzingen worden automatisch opgelost.
Deze methode wordt gebruikt voor het lezen, converteren, indien nodig en het retourneren van atomische waarde-items uit de huidige knooppuntinhoud. Als het invoertype een geldige toewijzing is voor het type van het huidige knooppunt, wordt een exemplaar van het doeltype met de waarde van het huidige knooppunt geretourneerd. Zie de sectie Opmerkingen op de XmlReader referentiepagina voor een lijst met de standaardtoewijzingen.
Als u bijvoorbeeld de volgende XML-tekst hebt:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Als de gegevens worden getypt en er een tekenreeksmatrix wordt opgegeven voor de ReadContentAs methode-aanroep, worden de gehele getallen geconverteerd van tekenreeksen op basis van de lijst met geldige CLR-typetoewijzingen.
Als de gegevens niet zijn getypt en er een tekenreeksmatrix wordt geleverd aan de ReadContentAs methode-aanroep, wordt de inhoud geparseerd in afzonderlijke tekenreeksen. Een matrix met twee tekenreeksen wordt geretourneerd met de waarden 123 en 456. De spaties blijven niet behouden voor de inhoud.
Over het algemeen bij het lezen van niet-getypte gegevens wordt de inhoud geparseerd op basis van het opgegeven type. Als bijvoorbeeld een matrix met gehele getallen wordt opgegeven voor de ReadContentAs methodeaanroep, wordt de tekenreeks geparseerd in een matrix met gehele getallen {123,456}.
In het volgende voorbeeld wordt de XML-tekst niet gescheiden door spaties
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
Als de inhoud niet is getypt en er een tekenreeksmatrix wordt geleverd aan de ReadContentAs methodeaanroep, wordt een matrix met één samengevoegde tekenreeks geretourneerd met de waarde '123456789'.
In de volgende tabel wordt beschreven hoe deze methode elk knooppunttype behandelt.
| XmlNodeType | Retourwaarde | Gedrag van lezer |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Samengevoegde inhoud van tekst, CDATA, witruimte en significante witruimteknooppunten geconverteerd naar het aangevraagde type. | Hiermee gaat u naar de volgende tag voor het beginelement of het volgende eindelement. Entiteitsverwijzingen worden automatisch uitgebreid. |
Attribute |
Hetzelfde als het aanroepen XmlConvert.ToXxx van de kenmerkwaarde. |
De lezer blijft op de huidige positie. |
CommentProcessingInstruction |
Negeert de verwerkingsinstructie (PI) of opmerking en leest de samengevoegde tekstinhoud die volgt op de PI of opmerking. | Hiermee gaat u naar de volgende tag voor het beginelement of het volgende eindelement. Entiteitsverwijzingen worden automatisch uitgebreid. |
EndElement |
Een lege tekenreeks. | De lezer blijft op de huidige positie. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Er is een InvalidOperationException gegooid. | Niet gedefinieerd, hoewel de lezer doorgaans in de huidige positie blijft. |
Zie de sectie Opmerkingen van de XmlReader referentiepagina en het W3C XML-schema deel 2: aanbeveling voor gegevenstypen voor meer informatie.
Zie voor de asynchrone versie van deze methode ReadContentAsAsync.