XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metodo

Definizione

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

Object

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.

Si applica a