XmlReader.ReadContentAs(Type, IXmlNamespaceResolver) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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 |
|---|---|---|
TextCDATAWhitespaceSignificantWhitespaceEntityReferenceEndEntity |
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. |
CommentProcessingInstruction |
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. |
ElementXmlDeclarationNoneDocumentDocumentTypeNotationEntityDocumentFragment |
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: .