XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metod

Definition

Läser innehållet som ett objekt av den angivna typen.

public:
 virtual System::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

Parametrar

returnType
Type

Typ av värde som ska returneras.

Note Med versionen av .NET Framework 3.5 kan värdet för parametern returnType nu vara DateTimeOffset typ.

namespaceResolver
IXmlNamespaceResolver

Ett IXmlNamespaceResolver objekt som används för att matcha namnområdesprefix relaterade till typkonvertering. Detta kan till exempel användas när du konverterar ett XmlQualifiedName objekt till en xs:string.

Det här värdet kan vara null.

Returer

Det sammanfogade textinnehållet eller attributvärdet som konverterats till den begärda typen.

Undantag

Innehållet har inte rätt format för måltypen.

Försök till avgjutning är inte giltigt.

Värdet returnType är null.

Den aktuella noden är inte en nodtyp som stöds. Mer information finns i tabellen nedan.

-eller-

En XmlReader metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".

Läs Decimal.MaxValue.

Exempel

I följande exempel används ReadContentAs metoden för att returnera innehållet i färgelementet till en matris med strängobjekt.

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

I exemplet används dataFile_2.xml filen som indata.

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

Kommentarer

Den här metoden läser textinnehållet i den aktuella läsarpositionen och konverterar det till den begärda returtypen. Text, tomt utrymme, betydande blanksteg och CDATA-avsnitt sammanfogas. Kommentarer och bearbetningsinstruktioner hoppas över och entitetsreferenser matchas automatiskt.

Den här metoden används för att läsa, konvertera vid behov och returnera atomiska värdeobjekt från det aktuella nodinnehållet. Om indatatypen är en giltig mappning för den aktuella nodens typ returneras en instans av måltypen som innehåller värdet för den aktuella noden. Se avsnittet Kommentarer på XmlReader referenssidan för en lista över standardmappningar.

Om du till exempel har följande XML-text:

<elem>123 <!-- comment --> <?pi my_text?> 456 <?pi another_pi?></elem>

Om data skrivs och en strängmatris skickas till metodanropet ReadContentAs konverteras heltalsvärdena från strängar enligt listan över giltiga CLR-typmappningar.

Om data är otypade och en strängmatris tillhandahålls till metodanropet ReadContentAs parsas innehållet i separata strängar. En matris som innehåller två strängar returneras med värdena "123" och "456". Blankstegen bevaras inte från innehållet.

I allmänhet parsas innehållet enligt den angivna typen vid läsning av otypade data. Om till exempel en heltalsmatris levereras till ReadContentAs metodanropet parsas strängen till en matris med heltal {123,456}.

I följande exempel avgränsas inte XML-texten med blanksteg

<elem>123<!-- comment --><?pi my_text?>456789<?pi another_pi?></elem>

Om innehållet är otypat och en strängmatris skickas till metodanropet ReadContentAs returneras en matris som innehåller en sammanfogad sträng med värdet "123456789".

I följande tabell beskrivs hur den här metoden behandlar varje nodtyp.

XmlNodeType Returvärde Läsarbeteende
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
Sammanfogat innehåll i text, CDATA, tomt utrymme och betydande blankstegsnoder konverterade till den begärda typen. Flyttar till taggen nästa startelement eller slutelement. Entitetsreferenser expanderas automatiskt.
Attribute Samma sak som att anropa XmlConvert.ToXxx attributvärdet. Läsaren förblir i den aktuella positionen.
Comment

ProcessingInstruction
Ignorerar bearbetningsinstruktionen (PI) eller kommentaren och läser det sammanfogade textinnehållet som följer PI eller kommentaren. Flyttar till taggen nästa startelement eller slutelement. Entitetsreferenser expanderas automatiskt.
EndElement En tom sträng. Läsaren förblir i den aktuella positionen.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
En InvalidOperationException kastas. Odefinierat, även om läsaren vanligtvis förblir i den aktuella positionen.

Mer information finns i avsnittet Kommentarer på XmlReader referenssidan och W3C XML-schemadel 2: Rekommendationen Datatyper .

Den asynkrona versionen av den här metoden finns i ReadContentAsAsync.

Gäller för