Assembly: System.Xml (in system.xml.dll)
Public Overridable Function ReadContentAs ( _ returnType As Type, _ namespaceResolver As IXmlNamespaceResolver _ ) As Object
Dim instance As XmlReader Dim returnType As Type Dim namespaceResolver As IXmlNamespaceResolver Dim returnValue As Object returnValue = instance.ReadContentAs(returnType, namespaceResolver)
public virtual Object ReadContentAs ( Type returnType, IXmlNamespaceResolver namespaceResolver )
public: virtual Object^ ReadContentAs ( Type^ returnType, IXmlNamespaceResolver^ namespaceResolver )
public Object ReadContentAs ( Type returnType, IXmlNamespaceResolver namespaceResolver )
public function ReadContentAs ( returnType : Type, namespaceResolver : IXmlNamespaceResolver ) : Object
Parametri
- returnType
-
Tipo di valore da restituire.
- namespaceResolver
-
Oggetto IXmlNamespaceResolver utilizzato per risolvere qualsiasi prefisso di spazio dei nomi correlato al tipo di conversione. Questo oggetto può essere utilizzato, ad esempio, per la conversione di un oggetto XmlQualifiedName in xs:string.
Questo valore può essere riferimento null (Nothing in Visual Basic).
Valore restituito
Contenuto del testo concatenato o valore dell'attributo convertito nel tipo specificato.| Tipo di eccezione | Condizione |
|---|---|
| Il contenuto non presenta il formato corretto per il tipo di destinazione. |
|
| Il tentativo di cast non è valido. |
|
| Il valore returnType è riferimento null (Nothing in Visual Basic). |
|
| Il nodo corrente non è un tipo di nodo supportato. Per ulteriori informazioni vedere la tabella riportata di seguito. |
Questo metodo legge il contenuto di testo nella posizione corrente del visualizzatore e lo converte nel tipo restituito richiesto. Testo, spazi vuoti, spazi vuoti significativi e sezioni CDATA sono concatenati. I commenti e le istruzioni di elaborazione vengono ignorati e i riferimenti alle entità vengono risolti automaticamente.
Questo metodo viene utilizzato per leggere, convertire (se necessario) e restituire elementi con valore atomico dal contenuto del nodo corrente. Se il tipo di input è un mapping valido per il tipo del nodo corrente, viene restituita un'istanza del tipo di destinazione contenente il valore del nodo corrente. Per un elenco dei mapping predefiniti, vedere l'argomento Mapping dei tipi di dati XML a tipi di dati CLR.
Se, ad esempio, si dispone del seguente testo XML:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Se i dati sono tipizzati e viene specificata una matrice di stringhe per la chiamata al metodo ReadContentAs, le stringhe vengono convertite in valori integer in base all'elenco di mapping del tipo CLR validi.
Se i dati non sono tipizzati e viene specificata una matrice di stringhe per la chiamata al metodo ReadContentAs, il contenuto viene analizzato in stringhe separate. Con i valori "123" e "456" viene restituita una matrice contenente due stringhe. Gli spazi presenti nel contenuto non vengono mantenuti.
In generale, quando vengono letti dati non tipizzati, il contenuto viene analizzato in base al tipo specificato. Se, ad esempio, una matrice di numeri interi viene specificata per la chiamata al metodo ReadContentAs, la stringa viene analizzata in una matrice di numeri interi {123,456}.
Nell'esempio riportato di seguito, il testo XML non è separato da spazi.
<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>
Se il contenuto non è tipizzato e viene specificata una matrice di stringhe per la chiamata al metodo ReadContentAs, viene restituita una matrice contenente un'unica stringa concatenata con il valore "123456789".
Nella tabella riportata di seguito viene illustrato come viene considerato ogni tipo di nodo dal metodo.
| XmlNodeType | Valore restituito | Comportamento del visualizzatore |
|---|---|---|
| Text CDATA Whitespace SignificantWhitespace EntityReference EndEntity | Contenuto concatenato di nodi testo, CDATA, spazi vuoti e spazi vuoti significativi convertiti nel tipo richiesto. | Consente di spostare il successivo tag dell'elemento iniziale o finale. I riferimenti a entità vengono espansi automaticamente. |
| Attribute | Equivale a chiamare XmlConvert.ToXxx nel valore dell'attributo. | Il visualizzatore resta nella posizione corrente. |
| Comment ProcessingInstruction | Ignora l'istruzione di elaborazione (PI, Processing Instruction) o il commento e legge il contenuto del testo concatenato successivo all'istruzione di elaborazione o al commento. | Consente di spostare il successivo tag dell'elemento iniziale o finale. I riferimenti a entità vengono espansi automaticamente. |
| EndElement | Stringa vuota. | Il visualizzatore resta nella posizione corrente. |
| Element XmlDeclaration None Document DocumentType Notation Entity DocumentFragment | Viene generata un'InvalidOperationException. | Non definito, sebbene in genere il visualizzatore resti nella posizione corrente. |
Per ulteriori informazioni, vedere Lettura di dati tipizzati e la raccomandazione W3C XML Schema Part 2: Datatypes all'indirizzo http://www.w3.org/TR/xmlschema-2/ (informazioni in lingua inglese).
Nell'esempio riportato di seguito viene utilizzato il metodo ReadContentAs per restituire il contenuto dell'elemento colore in una matrice di oggetti stringa.
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
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); } }
Nell'esempio viene utilizzato il file dataFile_2.xml come input.
<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>
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.
.NET Framework
Supportato in: 2.0.NET Compact Framework
Supportato in: 2.0Riferimenti
Classe XmlReaderMembri XmlReader
Spazio dei nomi System.Xml