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 di valore da restituire.
Nota Con il rilascio di .NET Framework 3.5, il valore del parametro returnType
ora può essere il tipo DateTimeOffset.
- namespaceResolver
- IXmlNamespaceResolver
Oggetto IXmlNamespaceResolver usato per risolvere qualsiasi prefisso di spazio dei nomi correlato al tipo di conversione. Può essere usato ad esempio per la conversione di un oggetto XmlQualifiedName in xs:string
.
Il valore può essere null
.
Restituisce
Contenuto di testo concatenato o valore dell'attributo convertito nel tipo specificato.
Eccezioni
Il contenuto non presenta il formato corretto per il tipo di destinazione.
Il tentativo di cast non è valido.
Il valore returnType
è null
.
Il nodo corrente non è un tipo di nodo supportato. Per ulteriori informazioni vedere la tabella riportata di seguito.
-oppure-
È stato chiamato un metodo della classe XmlReader prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".
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
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>
Commenti
Questo metodo legge il contenuto di testo nella posizione corrente del lettore e lo converte nel tipo restituito richiesto. Il testo, gli spazi vuoti, gli spazi vuoti significativi e le sezioni CDATA sono 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. Vedere la sezione Osservazioni nella XmlReader pagina di riferimento per un elenco dei mapping predefiniti.
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 integer vengono convertiti da stringhe in base all'elenco di mapping dei tipi CLR validi.
Se i dati non sono tipizzati 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, quando si leggono dati non tipizzati, il contenuto viene analizzato in base al tipo fornito. Ad esempio, se alla chiamata al ReadContentAs metodo viene fornita una matrice integer, 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 il modo in cui questo metodo gestisce ogni tipo di nodo.
XmlNodeType | Valore restituito | Comportamento del lettore |
---|---|---|
Text CDATA Whitespace SignificantWhitespace EntityReference EndEntity |
Contenuto concatenato di nodi di tipo text, CDATA, spazi vuoti e spazi vuoti significativi convertiti nel tipo richiesto. | Si sposta al successivo tag di fine o di inizio dell'elemento. I riferimenti a entità vengono espansi automaticamente. |
Attribute |
Uguale alla chiamata XmlConvert.ToXxx al valore dell'attributo. |
Il lettore 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. | Si sposta al successivo tag di fine o di inizio dell'elemento. I riferimenti a entità vengono espansi automaticamente. |
EndElement |
Stringa vuota. | Il lettore resta nella posizione corrente. |
Element XmlDeclaration None Document DocumentType Notation Entity DocumentFragment |
Viene generato un tipo InvalidOperationException. | Non definito, sebbene in genere il lettore resti 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.