Metodo XmlReader.ReadContentAs (System.Xml)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Metodo XmlReader.ReadContentAs

Nota: questo metodo è stato introdotto con .NET Framework versione 2.0.

Legge il contenuto come oggetto del tipo specificato.

Spazio dei nomi: System.Xml
Assembly: System.Xml (in system.xml.dll)

Sintassi

Visual Basic - (Dichiarazione)
Public Overridable Function ReadContentAs ( _
	returnType As Type, _
	namespaceResolver As IXmlNamespaceResolver _
) As Object
Visual Basic (Utilizzo)
Dim instance As XmlReader
Dim returnType As Type
Dim namespaceResolver As IXmlNamespaceResolver
Dim returnValue As Object

returnValue = instance.ReadContentAs(returnType, namespaceResolver)
C#
public virtual Object ReadContentAs (
	Type returnType,
	IXmlNamespaceResolver namespaceResolver
)
C++
public:
virtual Object^ ReadContentAs (
	Type^ returnType, 
	IXmlNamespaceResolver^ namespaceResolver
)
J#
public Object ReadContentAs (
	Type returnType, 
	IXmlNamespaceResolver namespaceResolver
)
JScript
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.
Eccezioni

Tipo di eccezione Condizione

FormatException

Il contenuto non presenta il formato corretto per il tipo di destinazione.

InvalidCastException

Il tentativo di cast non è valido.

ArgumentNullException

Il valore returnType è riferimento null (Nothing in Visual Basic).

InvalidOperationException

Il nodo corrente non è un tipo di nodo supportato. Per ulteriori informazioni vedere la tabella riportata di seguito.

Note

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).

Esempio

Nell'esempio riportato di seguito viene utilizzato il metodo ReadContentAs per restituire il contenuto dell'elemento colore in una matrice di oggetti stringa.

Visual Basic
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

C#
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>

Piattaforme

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.

Informazioni sulla versione

.NET Framework

Supportato in: 2.0

.NET Compact Framework

Supportato in: 2.0
Vedere anche