XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Legge il contenuto come oggetto del tipo specificato.
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
Parametri
- returnType
- Type
Tipo del valore da restituire.
Nota Con il rilascio di .NET Framework 3.5, il valore del returnType parametro può ora essere il DateTimeOffset tipo.
- namespaceResolver
- IXmlNamespaceResolver
Oggetto IXmlNamespaceResolver utilizzato per risolvere eventuali prefissi dello spazio dei nomi correlati alla conversione dei tipi. Ad esempio, questa operazione può essere usata durante la conversione di un XmlQualifiedName oggetto in un oggetto xs:string.
Il valore può essere null.
Valori restituiti
Valore del testo o dell'attributo concatenato convertito nel tipo richiesto.
Eccezioni
Il contenuto non è nel formato corretto per il tipo di destinazione.
Il cast tentato non è valido.
Il valore returnType è null.
Il nodo corrente non è un tipo di nodo supportato. Per informazioni dettagliate, vedere la tabella seguente.
oppure
È stato chiamato un XmlReader metodo prima del completamento di un'operazione asincrona precedente. In questo caso, InvalidOperationException viene generata con il messaggio "Un'operazione asincrona è già in corso".
Leggere Decimal.MaxValue.
Esempio
Nell'esempio seguente viene utilizzato il ReadContentAs metodo per restituire il contenuto dell'elemento colors in una matrice di oggetti stringa.
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
L'esempio usa il dataFile_2.xml file 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>
Commenti
Questo metodo legge il contenuto di testo nella posizione corrente del lettore e lo converte nel tipo restituito richiesto. Testo, spazi vuoti, spazi vuoti significativi e sezioni CDATA vengono concatenati. I commenti e le istruzioni di elaborazione vengono ignorati e i riferimenti alle entità vengono risolti automaticamente.
Questo metodo viene usato per leggere, convertire, se necessario e restituire elementi di 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 la sezione Osservazioni nella XmlReader pagina di riferimento.
Ad esempio, se si dispone del testo XML seguente:
<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>
Se i dati vengono tipizzati e viene fornita una matrice di stringhe alla chiamata al ReadContentAs metodo, i valori interi vengono convertiti da stringhe in base all'elenco di mapping di tipi CLR validi.
Se i dati non sono tipizzato e viene fornita una matrice di stringhe alla chiamata al ReadContentAs metodo, il contenuto viene analizzato in stringhe separate. Viene restituita una matrice contenente due stringhe con i valori "123" e "456". Gli spazi non vengono mantenuti dal contenuto.
In generale, durante la lettura dei dati non tipizzato, il contenuto viene analizzato in base al tipo fornito. Ad esempio, se viene fornita una matrice integer alla chiamata al ReadContentAs metodo, la stringa viene analizzata in una matrice di numeri interi {123,456}.
Nell'esempio seguente 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 fornita una matrice di stringhe alla chiamata al ReadContentAs metodo, viene restituita una matrice contenente una stringa concatenata con il valore "123456789".
Nella tabella seguente viene descritto come questo metodo gestisce ogni tipo di nodo.
| Xmlnodetype | Valore restituito | Comportamento lettore |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
Contenuto concatenato di testo, CDATA, spazi vuoti e nodi di spazi vuoti significativi convertiti nel tipo richiesto. | Passa al tag dell'elemento iniziale o dell'elemento finale successivo. I riferimenti alle entità vengono espansi automaticamente. |
Attribute |
Uguale alla chiamata XmlConvert.ToXxx al valore dell'attributo. |
Il lettore rimane nella posizione corrente. |
CommentProcessingInstruction |
Ignora l'istruzione di elaborazione o il commento e legge il contenuto di testo concatenato che segue il PI o il commento. | Passa al tag dell'elemento iniziale o dell'elemento finale successivo. I riferimenti alle entità vengono espansi automaticamente. |
EndElement |
Stringa vuota. | Il lettore rimane nella posizione corrente. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
Viene generata un'eccezione InvalidOperationException . | Non definito, anche se in genere il lettore rimane nella posizione corrente. |
Per altre informazioni, vedere la sezione Osservazioni della XmlReader pagina di riferimento e la raccomandazione W3C XML Schema Part 2: Datatypes .
Per la versione asincrona di questo metodo, vedere ReadContentAsAsync.