XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metódus

Definíció

Beolvassa a tartalmat a megadott típusú objektumként.

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

Paraméterek

returnType
Type

A visszaadandó érték típusa.

Note A .NET Framework 3.5 kiadásával a returnType paraméter értéke mostantól a DateTimeOffset típus lehet.

namespaceResolver
IXmlNamespaceResolver

Egy IXmlNamespaceResolver objektum, amely a típuskonvertáláshoz kapcsolódó névtér-előtagok feloldására szolgál. Ez például akkor használható, ha egy XmlQualifiedName objektumot átalakít egy objektumra xs:string.

Ez az érték lehet null.

Válaszok

A kért típusra konvertált összefűzött szöveges tartalom vagy attribútumérték.

Kivételek

A tartalom nem megfelelő formátumban van a céltípushoz.

A megkísérelt szereposztás érvénytelen.

Az returnType érték a következő null: .

Az aktuális csomópont nem támogatott csomóponttípus. Részletekért tekintse meg az alábbi táblázatot.

-vagy-

Egy XmlReader metódust hívtak meg, mielőtt egy korábbi aszinkron művelet befejeződött. Ebben az esetben InvalidOperationException a "Aszinkron művelet már folyamatban van" üzenet jelenik meg.

Olvasás Decimal.MaxValue.

Példák

Az alábbi példa a ReadContentAs metódus használatával adja vissza a színelem tartalmát egy sztringobjektum-tömbbe.

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

A példa a dataFile_2.xml fájlt használja bemenetként.

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

Megjegyzések

Ez a metódus beolvassa a szöveges tartalmat az aktuális olvasói pozícióban, és átalakítja a kért visszatérési típusra. A szöveg, a szabad terület, a jelentős szabad terület és a CDATA-szakaszok összefűzhetők. A megjegyzések és a feldolgozási utasítások kihagyása és az entitáshivatkozások automatikus feloldása.

Ez a módszer az aktuális csomóponttartalomból származó atomi értékelemek olvasására, szükség esetén konvertálására és visszaadására szolgál. Ha a bemeneti típus érvényes leképezés az aktuális csomópont típusához, akkor a rendszer az aktuális csomópont értékét tartalmazó céltípus egy példányát adja vissza. Az alapértelmezett leképezések listáját a XmlReader referencialap Megjegyzések szakaszában találja.

Ha például a következő XML-szöveg található:

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

Ha az adatok be vannak adva, és egy sztringtömb van megadva a ReadContentAs metódushíváshoz, akkor az egész számértékek sztringekből lesznek konvertálva az érvényes CLR-típusleképezések listájának megfelelően.

Ha az adatok be nem írtak, és a metódushíváshoz ReadContentAs egy sztringtömb van megadva, akkor a rendszer külön sztringekbe elemzi a tartalmat. A két sztringet tartalmazó tömb a "123" és a "456" értékkel lesz visszaadva. A szóközök nem maradnak meg a tartalomból.

A nem beírt adatok olvasásakor a rendszer általában a megadott típusnak megfelelően elemzi a tartalmat. Ha például egy egész számtömb van megadva a ReadContentAs metódushíváshoz, akkor a sztring egész számokat tartalmazó tömbbe lesz elemezve {123,456}.

Az alábbi példában az XML-szöveg nincs szóközzel elválasztva

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

Ha a tartalom nincs begépelve, és a metódushíváshoz ReadContentAs egy sztringtömb van megadva, a rendszer egy összefűzött sztringet tartalmazó tömböt ad vissza a "123456789" értékkel.

Az alábbi táblázat azt ismerteti, hogy ez a módszer hogyan kezeli az egyes csomóponttípusokat.

XmlNodeType Visszaadott érték Olvasói viselkedés
Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity
A kért típusra konvertált szöveg, CDATA, fehér terület és jelentős térközcsomópontok összefűzött tartalma. Ugrás a következő kezdőelemre vagy végelemcímkére. Az entitáshivatkozások automatikusan ki lesznek bontva.
Attribute Ugyanaz, mint az attribútumérték meghívása XmlConvert.ToXxx . Az olvasó a jelenlegi helyzetben marad.
Comment

ProcessingInstruction
Figyelmen kívül hagyja a feldolgozási utasítást (PI) vagy megjegyzést, és felolvassa a pi vagy megjegyzést követő összefűzött szöveges tartalmat. Ugrás a következő kezdőelemre vagy végelemcímkére. Az entitáshivatkozások automatikusan ki lesznek bontva.
EndElement Üres sztring. Az olvasó a jelenlegi helyzetben marad.
Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment
Egy InvalidOperationException van dobva. Nincs definiálva, bár az olvasó általában a jelenlegi helyzetben marad.

További információkért tekintse meg a referenciaoldal Megjegyzések szakaszát XmlReader és a W3C XML-séma 2. részét: Adattípusokra vonatkozó javaslatot.

A metódus aszinkron verziójáról lásd ReadContentAsAsync: .

A következőre érvényes: