XmlReader Osztály

Definíció

Olyan olvasót jelöl, amely gyors, nem gyorsítótárazott, csak továbbítható hozzáférést biztosít az XML-adatokhoz.

public ref class XmlReader abstract : IDisposable
public ref class XmlReader abstract
public abstract class XmlReader : IDisposable
public abstract class XmlReader
type XmlReader = class
    interface IDisposable
type XmlReader = class
Public MustInherit Class XmlReader
Implements IDisposable
Public MustInherit Class XmlReader
Öröklődés
XmlReader
Származtatott
Megvalósítás

Példák

Az alábbi példakód bemutatja, hogyan használható az aszinkron API az XML elemzéséhez.

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

Megjegyzések

XmlReader csak előre irányuló, írásvédett hozzáférést biztosít az XML-adatokhoz egy dokumentumban vagy folyamban. Ez az osztály megfelel a W3C Bővíthető korrektúranyelv (XML) 1.0 (negyedik kiadás) és az XML 1.0 (harmadik kiadás) névtereinek .

XmlReader metódusokkal áttérhet az XML-adatokon, és elolvashatja egy csomópont tartalmát. Az osztály tulajdonságai az aktuális csomópont értékét tükrözik, ahol az olvasó elhelyezve van. A ReadState tulajdonság értéke az XML-olvasó aktuális állapotát jelzi. A tulajdonságot például a ReadState.Initial metódus XmlReader.Read-re és a ReadState.Closed metódus XmlReader.Close-re állítja be. XmlReader adategyezőségi ellenőrzéseket és érvényesítést is biztosít egy DTD vagy séma alapján.

XmlReader lekéréses modellt használ az adatok lekéréséhez. Ez a modell:

  • Leegyszerűsíti az állapotkezelést egy természetes, felülről lefelé történő finomítással.
  • Több bemeneti streamet és rétegzést támogat.
  • Lehetővé teszi az ügyfél számára, hogy puffert adjon az elemzőnek, amelybe a sztring közvetlenül meg van írva, így elkerülhető egy további sztringmásolás szükségessége.
  • Támogatja a szelektív feldolgozást. Az ügyfél kihagyhatja az alkalmazás szempontjából fontos elemeket és feldolgozhatja őket. A tulajdonságokat előre is beállíthatja az XML-adatfolyam feldolgozásának (például normalizálásának) kezeléséhez.

XML-olvasó létrehozása

Create metódus használatával hozzon létre egy XmlReader példányt.

Bár a .NET konkrét implementációkat biztosít az XmlReader osztályhoz, például a XmlTextReader, XmlNodeReaderés az XmlValidatingReader osztályokhoz, javasoljuk, hogy csak ezekben a forgatókönyvekben használja a specializált osztályokat:

  • Ha egy XML DOM-részhalmazt szeretne beolvasni egy XmlNode objektumból, használja az osztályt XmlNodeReader . (Ez az osztály azonban nem támogatja a DTD- vagy sémaérvényesítést.)
  • Ha igény szerint ki kell bontania az entitásokat, nem szeretné normalizálni a szöveges tartalmat, vagy nem szeretné az alapértelmezett attribútumokat visszaadni, használja az osztályt XmlTextReader .

Az XML-olvasóban engedélyezni kívánt funkciók megadásához adjon át egy System.Xml.XmlReaderSettings objektumot a Create metódusnak. Egyetlen System.Xml.XmlReaderSettings objektummal több olvasót is létrehozhat ugyanazzal a funkcióval, vagy módosíthatja az System.Xml.XmlReaderSettings objektumot úgy, hogy egy új olvasót hozzon létre más funkciókkal. A meglévő olvasóhoz is egyszerűen hozzáadhat funkciókat.

Ha nem használ objektumot System.Xml.XmlReaderSettings , a rendszer az alapértelmezett beállításokat használja. Részletekért tekintse meg a Create referenciaoldalt.

XmlReader XmlException XML-elemzési hibákat jelez. Miután kivétel keletkezik, az olvasó állapota nem kiszámítható. Előfordulhat például, hogy a jelentett csomópont típusa eltér az aktuális csomópont tényleges csomóponttípusától. ReadState A tulajdonság használatával ellenőrizze, hogy az olvasó hibaállapotban van-e.

XML-adatok ellenőrzése

Az XML-dokumentumok szerkezetének és elemkapcsolatainak, adattípusainak és tartalomkorlátjainak meghatározásához dokumentumtípus-definíciót (DTD) vagy XML-sémadefiníciós nyelvet (XSD) használ. Az XML-dokumentumok akkor tekinthetők jól formázottnak, ha megfelelnek a W3C XML 1.0 javaslat által meghatározott összes szintaktikai követelménynek. Akkor tekinthető érvényesnek, ha jól formázott, és megfelel a DTD vagy séma által meghatározott korlátozásoknak is. (Lásd a W3C XML-séma 1. részét: Struktúrák és a W3C XML-séma 2. rész: Adattípusokra vonatkozó javaslatok.) Ezért bár az összes érvényes XML-dokumentum jól formázott, nem minden jól formázott XML-dokumentum érvényes.

Az adatokat érvényesítheti egy DTD-n, egy beágyazott XSD-sémán vagy egy XmlSchemaSet objektumban (gyorsítótárban) tárolt XSD-sémán. Ezeket a forgatókönyveket a Create referenciaoldal ismerteti. XmlReader nem támogatja a XML-Data csökkentett (XDR) sémaérvényesítést.

Az alábbi beállításokat használhatja a XmlReaderSettings osztályon annak meghatározására, hogy milyen típusú ellenőrzést támogat, ha van ilyen, a XmlReader példány.

A XmlReaderSettings tag használata Meghatározni
DtdProcessing ingatlan A DTD-feldolgozás engedélyezése. Az alapértelmezett beállítás a DTD-feldolgozás letiltása.
ValidationType ingatlan Az olvasónak ellenőriznie kell-e az adatokat, és hogy milyen típusú érvényesítést kell végrehajtania (DTD vagy séma). Az alapértelmezés szerint nincs adatérvényesítés.
ValidationEventHandler esemény Eseménykezelő az érvényesítési eseményekre vonatkozó információk fogadásához. Ha nincs megadva eseménykezelő, az XmlException dobódik az első érvényesítési hibánál.
ValidationFlags ingatlan További érvényesítési lehetőségek az enumerálási XmlSchemaValidationFlags tagokon keresztül:

- AllowXmlAttributes-- Engedélyezi az XML-attribútumokat (xml:*) a példánydokumentumokban akkor is, ha nincsenek definiálva a sémában. Az attribútumok az adattípusuk alapján lesznek érvényesítve. Nézze meg a XmlSchemaValidationFlags hivatkozási oldalt a speciális forgatókönyvekben használatos beállításhoz. (Alapértelmezés szerint le van tiltva.)
- ProcessIdentityConstraints --Az ellenőrzés során észlelt identitáskorlátozások (xs:ID, xs:IDREF, xs:key, xs:keyref, ) xs:uniquefeldolgozása. (Alapértelmezés szerint engedélyezve.)
- ProcessSchemaLocation--A xsi:schemaLocation vagy xsi:noNamespaceSchemaLocation attribútum által meghatározott folyamat-sémák feldolgozása. (Alapértelmezés szerint engedélyezve.)
- ProcessInlineSchema-- A beágyazott XML-sémák feldolgozása az ellenőrzés során. (Alapértelmezés szerint le van tiltva.)
- ReportValidationWarnings--Események jelentése érvényesítési figyelmeztetés esetén. Általában figyelmeztetést adnak ki, ha nincs DTD- vagy XML-séma egy adott elem vagy attribútum ellenőrzéséhez. A ValidationEventHandler értesítés céljából van használva. (Alapértelmezés szerint le van tiltva.)
Schemas Az XmlSchemaSet ellenőrzéshez használandó.
XmlResolver ingatlan Külső erőforrások feloldására és elérésére a XmlResolver. Ez tartalmazhat külső entitásokat, például DTD-t és sémákat, valamint az XML-séma bármely xs:include vagy xs:import elemét. Ha nem ad meg egy XmlResolver, akkor az XmlReader alapértelmezett XmlUrlResolver-t használ, felhasználói hitelesítés nélkül.

Adatmegformálás

A metódus által Create létrehozott XML-olvasók alapértelmezés szerint megfelelnek a következő megfelelőségi követelményeknek:

  • Az új sorok és attribútumértékek normalizálása a W3C XML 1.0 javaslatnak megfelelően zajlik.

  • A rendszer automatikusan kibontja az összes entitást.

  • A dokumentumtípus-definícióban deklarált alapértelmezett attribútumok mindig akkor is hozzáadódnak, ha az olvasó nem ellenőrzi.

  • A megfelelő XML-névtér URI-jára leképezett XML-előtag deklarációja engedélyezett.

  • Az egyetlen NotationType attribútum deklarációban és NmTokens egyetlen Enumeration attribútumdeklarációban szereplő jelölésnevek eltérőek.

Az alábbi XmlReaderSettings tulajdonságok segítségével adhatja meg az engedélyezni kívánt megfelelőségi ellenőrzések típusát:

A XmlReaderSettings tulajdonság használata Címzett Alapértelmezett
CheckCharacters ingatlan Az alábbi ellenőrzések engedélyezése vagy letiltása:

- A karakterek a jogi XML-karakterek tartományán belül vannak, a W3C XML 1.0 javaslat 2.2 karakteres szakaszában meghatározottak szerint.
- Minden XML-név érvényes, a W3C XML 1.0-javaslat 2.3 Common Syntactic Constructs szakaszában meghatározottak szerint.

Ha ez a tulajdonság (alapértelmezett) értékre true van állítva, a rendszer kivételt XmlException jelez, ha az XML-fájl érvénytelen karaktereket vagy érvénytelen XML-neveket tartalmaz (például egy elem neve számmal kezdődik).
A karakter- és névellenőrzés engedélyezve van.

A CheckCharactersfalse beállítása kikapcsolja a karakterentitás-hivatkozások karakterellenőrzését. Ha az olvasó szöveges adatokat dolgoz fel, a beállítástól függetlenül mindig ellenőrzi, hogy az XML-nevek érvényesek-e. Jegyzet: Az XML 1.0-javaslat dokumentumszintű megfelelőséget igényel, ha DTD van jelen. Ezért ha az olvasó úgy van konfigurálva, hogy támogassa ConformanceLevel.Fragment, de az XML-adatok tartalmaznak egy dokumentumtípus-definíciót (DTD), a program egy XmlException hibát ad ki.
ConformanceLevel ingatlan A kikényszerítéshez válassza ki a megfelelőségi szintet:

- Document. Megfelel egy jól formázott XML 1.0-dokumentum szabályainak.
- Fragment. Megfelel egy jól formázott dokumentumtöredék szabályainak, amely külső elemzési entitásként használható.
- Auto. Megfelel az olvasó által meghatározott szintnek.

Ha az adatok nem felelnek meg az előírásoknak, a rendszer kivételt XmlException jelez.
Document

Az aktuális csomópont az az XML-csomópont, amelyen az XML-olvasó jelenleg elhelyezve van. Minden XmlReader metódus ehhez a csomóponthoz kapcsolódó műveleteket hajt végre, és az összes XmlReader tulajdonság az aktuális csomópont értékét tükrözi.

Az alábbi módszerek megkönnyítik a csomópontok közötti navigálást és az adatok elemzését.

Használja ezt a metódust XmlReader Címzett
Read Olvassa el az első csomópontot, és lépjen előre az adatfolyamon, egy csomópontot egyszerre. Az ilyen hívásokat általában egy while hurokban hajtják végre.

NodeType A tulajdonság használatával lekérheti az aktuális csomópont típusát (például attribútum, megjegyzés, elem stb.).
Skip Hagyja ki az aktuális csomópont gyermekeit, és lépjen a következő csomópontra.
MoveToContent és MoveToContentAsync Hagyja ki a nem tartalomcsomópontokat, és lépjen a következő tartalomcsomópontra vagy a fájl végére.

Tartalom nélküli csomópontok közé tartoznak a ProcessingInstruction, DocumentType, Comment, Whitespace és SignificantWhitespace.

A tartalomcsomópontok közé tartozik a nem szóköz jellegű szöveg, CDATA, EntityReference, és EndEntity.
ReadSubtree Olvassa el az elemet és annak összes gyermekét, majd adjon vissza egy új XmlReader példányt, amely be van állítva ReadState.Initial állapotba.

Ez a módszer hasznos az XML-elemek körüli határok létrehozásához; Ha például adatokat szeretne átadni egy másik összetevőnek feldolgozás céljából, és korlátozni szeretné az összetevő által elérhető adatok nagy részét.

XmlReader.Read A referenciaoldalon egy példa látható arra, hogy egy szöveges streamben egyszerre egy csomópontot navigálhat, és megjelenítheti az egyes csomópontok típusát.

A következő szakaszok bemutatják, hogyan olvashatja el bizonyos adattípusokat, például elemeket, attribútumokat és begépelt adatokat.

XML-elemek olvasása

Az alábbi táblázat azokat a metódusokat és tulajdonságokat sorolja fel, amelyeket az osztály a XmlReader feldolgozási elemekhez biztosít. Miután a XmlReader csomópont egy elemen van elhelyezve, a csomópont tulajdonságai, például Nameaz elemértékeket tükrözik. Az alábbiakban ismertetett tagokon kívül az osztály bármely általános módszere és tulajdonsága használható az XmlReader elemek feldolgozására is. A metódus használatával ReadInnerXml például beolvashatja egy elem tartalmát.

Note

Tekintse meg a W3C XML 1.0 javaslatának 3.1 . szakaszát a kezdőcímkék, a zárócímkék és az üres elemcímkék definícióihoz.

A XmlReader tag használata Címzett
IsStartElement módszer Ellenőrizze, hogy az aktuális csomópont kezdőcímke vagy üres elemcímke-e.
ReadStartElement módszer Ellenőrizze, hogy az aktuális csomópont elem-e, és haladjon előre az olvasóval a következő csomópontra (hívásokat IsStartElement követve Read).
ReadEndElement módszer Ellenőrizze, hogy az aktuális csomópont egy végcímke-e, és továbblépteti az olvasót a következő csomópontra.
ReadElementString módszer Csak a szöveges elemet olvassa el.
ReadToDescendant módszer Léptesse az XML-olvasót a következő gyermekelemre, amely a megadott névvel rendelkezik.
ReadToNextSibling módszer Mozgassa az XML-olvasót a megadott nevű következő testvér elemre.
IsEmptyElement ingatlan Ellenőrizze, hogy az aktuális elem rendelkezik-e végfelhasználói címkével. Például:

- <item num="123"/> (IsEmptyElement a true.)
- <item num="123"> </item> (IsEmptyElement bár az false elem tartalma üres.)

Az elemek szöveges tartalmának olvasására példaként tekintse meg a metódust ReadString . Az alábbi példa egy while hurok használatával dolgozza fel az elemeket.

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
                {
                    Console.WriteLine("<{0}/>", reader.Name);
                }
                else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  }
}
While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

XML-attribútumok olvasása

Az XML-attribútumok leggyakrabban az elemeken találhatók, de XML-deklaráció és dokumentumtípus-csomópontokon is engedélyezettek.

Ha egy elemcsomóponton van elhelyezve, a MoveToAttribute metódussal végighaladhat az elem attribútumlistáján. Vegye figyelembe, hogy a meghívás után MoveToAttribute az olyan csomóponttulajdonságok, mint Namea , NamespaceURIés Prefix az attribútum tulajdonságait tükrözik, nem annak az elemnek a tulajdonságait, amelyhez az attribútum tartozik.

Az XmlReader osztály ezeket a metódusokat és tulajdonságokat biztosítja az elemek attribútumainak olvasásához és feldolgozásához.

A XmlReader tag használata Címzett
HasAttributes ingatlan Ellenőrizze, hogy az aktuális csomópont rendelkezik-e attribútumokkal.
AttributeCount ingatlan Az aktuális elem attribútumainak számának lekérése.
MoveToFirstAttribute módszer Ugrás az elem első attribútumára.
MoveToNextAttribute módszer Ugrás egy elem következő attribútumára.
MoveToAttribute módszer Ugrás egy megadott attribútumra.
GetAttribute metódus vagy Item[Int32] tulajdonság Egy megadott attribútum értékének lekérése.
IsDefault ingatlan Ellenőrizze, hogy az aktuális csomópont olyan attribútum-e, amely a DTD-ben vagy sémában definiált alapértelmezett értékből lett létrehozva.
MoveToElement módszer Ugrás az aktuális attribútumot tartalmazó elemre. Ezzel a módszerrel visszatérhet egy elemhez, miután végigjárta az attribútumait.
ReadAttributeValue módszer Elemezheti az attribútum értékét egy vagy több Text, EntityReferencevagy EndEntity csomópontban.

Az attribútumok feldolgozásához az általános XmlReader módszerek és tulajdonságok bármelyike használható. Ha például az XmlReader attribútum egy attribútumon van elhelyezve, a Name tulajdonságok az Value attribútum értékeit tükrözik. Az attribútum értékének lekéréséhez bármelyik tartalom metódusait Read használhatja.

Ez a példa a AttributeCount tulajdonság használatával navigál egy elem összes attribútumán.

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If

Ez a példa a MoveToNextAttribute metódust használja a while ciklusban az attribútumok közötti navigáláshoz.

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If

Attribútumok olvasása XML-deklarációs csomópontokon

Ha az XML-olvasó egy XML-deklarációs csomóponton van elhelyezve, a Value tulajdonság egyetlen sztringként adja vissza a verzió, az önálló és a kódolási információkat. XmlReader A Create metódus, az XmlTextReader osztály és az XmlValidatingReader osztály által létrehozott objektumok attribútumként teszik elérhetővé a verziót, az önálló és a kódolási elemeket.

Attribútumok olvasása dokumentumtípus-csomópontokon

Ha az XML-olvasó egy dokumentumtípus-csomóponton van, a GetAttribute metódust és a Item[Int32] tulajdonságot a SYSTEM és a PUBLIC literálok értékeinek visszaadására lehet használni. A hívás reader.GetAttribute("PUBLIC") például a NYILVÁNOS értéket adja vissza.

Attribútumok olvasása az utasításcsomópontok feldolgozásához

Amikor a XmlReader egy feldolgozási utasításcsomóponton helyezkedik el, a Value tulajdonság az egész szöveges tartalmat adja vissza. A feldolgozási utasítás csomópont elemeit a program nem attribútumként kezeli. Nem olvashatók a GetAttribute vagy a MoveToAttribute módszerrel.

XML-tartalom olvasása

Az XmlReader osztály a következő tagokat tartalmazza, amelyek egy XML-fájlból olvasnak be tartalmat, és sztringértékekként adják vissza a tartalmat. (A CLR-típusok visszaadásához lásd: Konvertálás CLR-típusokká.)

A XmlReader tag használata Címzett
Value ingatlan Az aktuális csomópont szöveges tartalmának lekérése. A visszaadott érték a csomópont típusától függ; részletekért tekintse meg a Value referenciaoldalt.
ReadString módszer Egy elem vagy szövegcsomópont tartalmának lekérése sztringként. Ez a módszer nem dolgoz fel utasításokat és megjegyzéseket.

A módszer adott csomóponttípusok kezelésére vonatkozó részletekért tekintse meg a ReadString referenciaoldalt.
ReadInnerXml és ReadInnerXmlAsync metódusok Szerezze be az aktuális csomópont összes tartalmát, beleértve a jelöléseket, de a kezdő- és a zárócímkéket nem. Például:

<node>this<child id="123"/></node>

ReadInnerXml a következőt adja vissza:

this<child id="123"/>
ReadOuterXml és ReadOuterXmlAsync metódusok Szerezze be az aktuális csomópont és annak gyermekeinek összes tartalmát, beleértve a jelölőnyelvet és a kezdő/záró címkéket is. Például:

<node>this<child id="123"/></node>

ReadOuterXml a következőt adja vissza:

<node>this<child id="123"/></node>

Konvertálás CLR-típusokká

Az osztály (az alábbi táblázatban felsorolt) tagjaival beolvashatja az XmlReader XML-adatokat, és sztringek helyett általános nyelvi futtatókörnyezeti (CLR-) típusként adja vissza az értékeket. Ezek a tagok lehetővé teszik, hogy a kódolási feladathoz leginkább megfelelő értékeket kérje le anélkül, hogy manuálisan kellene elemeznie vagy átalakítania a sztringértékeket.

  • A ReadElementContentAs metódusok csak elemcsomópont-típusok esetén hívhatók meg. Ezek a metódusok nem használhatók gyermekelemeket vagy vegyes tartalmakat tartalmazó elemeken. Meghíváskor az XmlReader objektum felolvassa a kezdőcímkét, felolvassa az elem tartalmát, majd a záróelem címkéje mellett lép át. A feldolgozási utasítások és megjegyzések figyelmen kívül lesznek hagyva, és az entitások ki vannak bontva.

  • A ReadContentAs metódusok az aktuális olvasói pozícióban olvassák be a szöveges tartalmat, és ha az XML-adatokhoz nincs társítva séma- vagy adattípus-információ, konvertálja a szöveges tartalmat 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 kimaradnak, és az entitáshivatkozások automatikusan feloldódnak.

Az XmlReader osztály a W3C XML-séma 2. rész: Adattípusok javaslatában meghatározott szabályokat használja.

Használja ezt a metódust XmlReader A CLR típus visszaadásához
ReadContentAsBoolean és ReadElementContentAsBoolean Boolean
ReadContentAsDateTime és ReadElementContentAsDateTime DateTime
ReadContentAsDouble és ReadElementContentAsDouble Double
ReadContentAsLong és ReadElementContentAsLong Int64
ReadContentAsInt és ReadElementContentAsInt Int32
ReadContentAsString és ReadElementContentAsString String
ReadContentAs és ReadElementContentAs A paraméterrel returnType megadott típus
ReadContentAsObject és ReadElementContentAsObject A XmlReader.ValueType tulajdonság által megadott legmegfelelőbb típus. A megfeleltetési információkért tekintse meg a System.Xml-osztályok típustámogatását .

Ha egy elem formátuma miatt nem konvertálható könnyen CLR-típussá, sémaleképezéssel biztosíthatja a sikeres átalakítást. Az alábbi példa .xsd fájllal konvertálja az hire-date elemet a xs:date típusra, majd a ReadElementContentAsDateTime metódussal objektumként DateTime adja vissza az elemet.

Bemenet (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

Séma (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Kód:

// Create a validating XmlReader object. The schema
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}
' Create a validating XmlReader object. The schema 
' provides the necessary type information.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd")
Using reader As XmlReader = XmlReader.Create("hireDate.xml", settings) 
  ' Move to the hire-date element.
  reader.MoveToContent()
  reader.ReadToDescendant("hire-date")

  ' Return the hire-date as a DateTime object.
  Dim hireDate As DateTime = reader.ReadElementContentAsDateTime()
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6))
End Using

Output:

Six Month Review Date:  7/8/2003 12:00:00 AM

Aszinkron programozás

A metódusok többsége aszinkron XmlReader megfelelőkkel rendelkezik, amelyek a metódusnevek végén "Async"-et használnak. Az ReadContentAsObject aszinkron megfelelője például a ReadContentAsObjectAsync.

A következő metódusok használhatók aszinkron metódushívásokkal:

Az alábbi szakaszok az aszinkron használatot ismertetik olyan metódusok esetében, amelyek nem rendelkeznek aszinkron megfelelőkkel.

ReadStartElement metódus

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}
<Extension()>
Public Async Function ReadStartElementAsync(reader As XmlReader, localname As String, ns As String) As Task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.Element) Then
        Throw New InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType")
    End If

    If ((reader.LocalName = localname) And (reader.NamespaceURI = ns)) Then
        Await reader.ReadAsync()
    Else
        Throw New InvalidOperationException("localName or namespace doesn’t match")
    End If
End Function

ReadEndElement metódus

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}
<Extension()>
Public Async Function ReadEndElementAsync(reader As XmlReader) As task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.EndElement) Then
        Throw New InvalidOperationException()
    End If
    Await reader.ReadAsync()
End Function

ReadToNextSibling metódus

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);
    
    return false;
}
<Extension()>
Public Async Function ReadToNextSiblingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the next sibling
    Dim nt As XmlNodeType
    Do

        Await reader.SkipAsync()
        If (reader.ReadState <> ReadState.Interactive) Then
            Exit Do
        End If
        nt = reader.NodeType
        If ((nt = XmlNodeType.Element) And
           ((CObj(localName) = CObj(reader.LocalName))) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    Loop While (nt <> XmlNodeType.EndElement And (Not reader.EOF))

    Return False

End Function

A ReadToFollowing metódus

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToFollowingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find element with that name
    While (Await reader.ReadAsync())
        If ((reader.NodeType = XmlNodeType.Element) And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

ReadToDescendant metódus

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}
<Extension()>
Public Async Function ReadToDescendantAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' save the element or root depth
    Dim parentDepth As Integer = reader.Depth
    If (reader.NodeType <> XmlNodeType.Element) Then
        ' adjust the depth if we are on root node
        If (reader.ReadState = ReadState.Initial) Then
            parentDepth -= 1
        Else
            Return False
        End If
    ElseIf (reader.IsEmptyElement) Then
        Return False
    End If
    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the descendant
    While (Await reader.ReadAsync() And reader.Depth > parentDepth)
        If (reader.NodeType = XmlNodeType.Element And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

Biztonsági megfontolások

Az osztály használatakor vegye figyelembe a XmlReader következőket:

  • A XmlReader által dobott kivételek felfedhetik az elérésiút-információt, amit esetleg nem szeretne felszínre jutni az alkalmazásban. Az alkalmazásnak ki kell fognia a kivételeket, és megfelelően kell feldolgoznia őket.

  • Ne engedélyezze a DTD-feldolgozást, ha a szolgáltatásmegtagadással vagy nem megbízható forrásokkal foglalkozik. A DTD-feldolgozás alapértelmezés szerint le van tiltva a XmlReader metódus által létrehozott objektumok esetébenCreate.

  • Az XML-adatok tartalmazhatnak külső erőforrásokra, például sémafájlra mutató hivatkozásokat. A külső erőforrásokat alapértelmezés szerint felhasználói XmlUrlResolver hitelesítő adatokkal nem rendelkező objektummal oldja fel a rendszer. Ezt az alábbi műveletek egyikével teheti biztonságossá:

  • Az ProcessInlineSchema objektum ProcessSchemaLocation és XmlReaderSettings érvényesítési jelzői alapértelmezés szerint nincsenek beállítva. Ez segít megvédeni a XmlReader sémaalapú támadásokat, ha xml-adatokat dolgoz fel nem megbízható forrásból. Ha ezek a jelzők be vannak állítva, az XmlResolverXmlReaderSettings objektumot használjuk a példánydokumentumban észlelt sémahelyek feloldására a XmlReader-ben. Ha a XmlResolver tulajdonság értéke null az, akkor a sémahivatkozások nem kerülnek feloldásra, még akkor sem, ha az ProcessInlineSchema és ProcessSchemaLocation érvényesítési jelölők be vannak állítva.

    Az ellenőrzés során hozzáadott sémák új típusokat adnak hozzá, és megváltoztathatják az érvényesítendő dokumentum érvényesítési eredményét. Ennek eredményeképpen a külső sémákat csak megbízható forrásokból kell feloldani.

    Javasoljuk, hogy tiltsa le a ProcessIdentityConstraints jelzőt, amikor a nem megbízható, nagy MÉRETŰ XML-dokumentumokat magas rendelkezésre állású forgatókönyvekben érvényesíti egy olyan sémán, amely identitáskorlátokkal rendelkezik a dokumentum nagy részén. Ez a jelző alapértelmezés szerint engedélyezve van.

  • Az XML-adatok számos attribútumot, névtér-deklarációt, beágyazott elemeket tartalmazhatnak, és így tovább, amelyek feldolgozásához jelentős idő szükséges. A beküldött XmlReaderbemenet méretének korlátozásához a következőt teheti:

    • A tulajdonság beállításával MaxCharactersInDocument korlátozhatja a dokumentum méretét.

    • A tulajdonság beállításával MaxCharactersFromEntities korlátozhatja az entitások bővítéséből eredő karakterek számát.

    • Hozzon létre egy egyéni IStream implementációt a XmlReader.

  • A ReadValueChunk módszer nagy adatstreamek kezelésére használható. Ez a metódus egyszerre kis számú karaktert olvas be ahelyett, hogy egyetlen sztringet osztanak ki a teljes értékhez.

  • Ha nagy számú egyedi helyi nevet, névteret vagy előtagot tartalmazó XML-dokumentumot olvas, probléma léphet fel. Ha egy olyan osztályt használ, amely a XmlReader-ből származik, és minden elemnél meghívja az LocalName, Prefix vagy NamespaceURI tulajdonságot, a visszaadott sztring hozzáadódik egy NameTable-hoz. A NameTable gyűjtemény mérete soha nem csökken, ami a sztringfogópontok virtuális memória szivárgását okozza. Ennek egyik kockázatcsökkentése az NameTable osztályból való származtatás és a maximális méretkvóta kikényszerítése. (Nincs mód arra, hogy megakadályozza egy NameTable használatát, vagy átváltson egy NameTable-t, amikor az megtelt). A másik megoldás az, hogy elkerüljük az említett tulajdonságok használatát, és amennyiben lehetséges, a MoveToAttribute metódust együtt használjuk a IsStartElement metódussal. Ezek a metódusok nem adnak vissza sztringeket, így elkerülhető a NameTable gyűjtemény túltöltésével kapcsolatos probléma.

  • XmlReaderSettings az objektumok bizalmas információkat, például felhasználói hitelesítő adatokat tartalmazhatnak. A nem megbízható összetevők az XmlReaderSettings objektumot és a felhasználói hitelesítő adatait használva hozhatnak létre XmlReader objektumokat az adatok olvasásához. Legyen óvatos az objektumok gyorsítótárazásakor XmlReaderSettings vagy az objektum egyik összetevőről a XmlReaderSettings másikra való továbbításakor.

  • Nem megbízható forrásból származó támogató összetevőket, például NameTable, XmlNamespaceManagerés XmlResolver objektumokat nem fogad el.

Konstruktorok

Name Description
XmlReader()

Inicializálja a XmlReader osztály új példányát.

Tulajdonságok

Name Description
AttributeCount

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális csomópont attribútumainak számát.

BaseURI

Ha egy származtatott osztályban felül van bírálva, lekéri az aktuális csomópont alap URI-ját.

CanReadBinaryContent

Egy értéket kap, amely jelzi, hogy a XmlReader bináris tartalom olvasási módszereit implementálja-e.

CanReadValueChunk

Egy értéket kap, amely jelzi, hogy a XmlReader metódus implementálva ReadValueChunk(Char[], Int32, Int32) van-e.

CanResolveEntity

Beolvas egy értéket, amely jelzi, hogy az olvasó elemezheti és feloldhatja-e az entitásokat.

Depth

Ha egy származtatott osztályban felül van bírálva, az XML-dokumentumban lekéri az aktuális csomópont mélységét.

EOF

Ha egy származtatott osztályban felül van bírálva, egy értéket kap, amely jelzi, hogy az olvasó a stream végén van-e elhelyezve.

HasAttributes

Beolvas egy értéket, amely jelzi, hogy az aktuális csomópont rendelkezik-e attribútumokkal.

HasValue

Ha egy származtatott osztály felül van bírálva, egy értéket kap, amely jelzi, hogy az aktuális csomópont rendelkezhet-e Value.

IsDefault

Ha felülbírált egy származtatott osztályban, egy értéket kap, amely jelzi, hogy az aktuális csomópont olyan attribútum-e, amely a DTD-ben vagy sémában definiált alapértelmezett értékből lett létrehozva.

IsEmptyElement

Ha egy származtatott osztályban felül van bírálva, egy értéket kap, amely jelzi, hogy az aktuális csomópont üres elem-e (például <MyElement/>).

Item[Int32]

Ha felülbírált egy származtatott osztályban, lekéri az attribútum értékét a megadott indexszel.

Item[String, String]

Ha felül van bírálva egy származtatott osztályban, lekéri az attribútum értékét a megadott LocalName és NamespaceURIa .

Item[String]

Ha felül van bírálva egy származtatott osztályban, lekéri az attribútum értékét a megadott Nameértékkel.

LocalName

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális csomópont helyi nevét.

Name

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális csomópont minősített nevét.

NamespaceURI

Ha felül van bírálva egy származtatott osztályban, lekéri annak a csomópontnak a névtér URI-ját (a W3C-névtér specifikációjában meghatározottak szerint), amelyen az olvasó elhelyezve van.

NameTable

Ha felül van bírálva egy származtatott osztályban, a rendszer lekéri az XmlNameTable implementációhoz társítottat.

NodeType

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális csomópont típusát.

Prefix

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális csomóponthoz társított névtérelőtagot.

QuoteChar

Ha egy származtatott osztályban felül van bírálva, lekéri az attribútumcsomópont értékének beágyazásához használt idézőjel karaktert.

ReadState

Ha felül van bírálva egy származtatott osztályban, lekéri az olvasó állapotát.

SchemaInfo

Lekéri az aktuális csomóponthoz a sémaérvényesítés eredményeként hozzárendelt sémaadatokat.

Settings

Lekéri a XmlReaderSettings példány létrehozásához XmlReader használt objektumot.

Value

Ha egy származtatott osztályban felül van bírálva, lekéri az aktuális csomópont szöveges értékét.

ValueType

Lekéri az aktuális csomópont common language runtime (CLR) típusát.

XmlLang

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális xml:lang hatókört.

XmlSpace

Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális xml:space hatókört.

Metódusok

Name Description
Close()

Ha felül van bírálva egy származtatott osztályban, a következőre ReadStateváltozik: Closed .

Create(Stream, XmlReaderSettings, String)

Létrehoz egy új XmlReader példányt a megadott stream, alap URI és beállítások használatával.

Create(Stream, XmlReaderSettings, XmlParserContext)

Létrehoz egy új XmlReader példányt a megadott stream, beállítások és környezeti információk használatával az elemzéshez.

Create(Stream, XmlReaderSettings)

Létrehoz egy új XmlReader példányt a megadott adatfolyammal és beállításokkal.

Create(Stream)

Létrehoz egy új XmlReader példányt a megadott stream használatával, alapértelmezett beállításokkal.

Create(String, XmlReaderSettings, XmlParserContext)

Létrehoz egy új XmlReader példányt a megadott URI, beállítások és környezeti információk használatával az elemzéshez.

Create(String, XmlReaderSettings)

Új példányt XmlReader hoz létre a megadott URI és beállítások használatával.

Create(String)

Létrehoz egy új XmlReader példányt a megadott URI-val.

Create(TextReader, XmlReaderSettings, String)

Új példányt XmlReader hoz létre a megadott szövegolvasó, beállítások és alapszintű URI használatával.

Create(TextReader, XmlReaderSettings, XmlParserContext)

Új példányt XmlReader hoz létre a megadott szövegolvasó, beállítások és környezetinformációk használatával az elemzéshez.

Create(TextReader, XmlReaderSettings)

Új példányt XmlReader hoz létre a megadott szövegolvasó és -beállítások használatával.

Create(TextReader)

Új példányt XmlReader hoz létre a megadott szövegolvasó használatával.

Create(XmlReader, XmlReaderSettings)

Létrehoz egy új XmlReader példányt a megadott XML-olvasó és -beállítások használatával.

Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja XmlReader .

Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által XmlReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetAttribute(Int32)

Ha felülbírált egy származtatott osztályban, lekéri az attribútum értékét a megadott indexszel.

GetAttribute(String, String)

Ha felül van bírálva egy származtatott osztályban, lekéri az attribútum értékét a megadott LocalName és NamespaceURIa .

GetAttribute(String)

Ha felül van bírálva egy származtatott osztályban, lekéri az attribútum értékét a megadott Nameértékkel.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetValueAsync()

Aszinkron módon lekéri az aktuális csomópont értékét.

IsName(String)

Egy értéket ad vissza, amely jelzi, hogy a sztring argumentum érvényes XML-név-e.

IsNameToken(String)

Egy értéket ad vissza, amely jelzi, hogy a sztringargumentum érvényes XML-név jogkivonat-e.

IsStartElement()

Meghívja MoveToContent() és ellenőrzi, hogy az aktuális tartalomcsomópont kezdőcímke vagy üres elemcímke-e.

IsStartElement(String, String)

Meghívja MoveToContent() és ellenőrzi, hogy az aktuális tartalomcsomópont kezdőcímke vagy üres elemcímke-e, és hogy a LocalName talált elem tulajdonságai megegyeznek-e NamespaceURI a megadott sztringekkel.

IsStartElement(String)

Meghívja MoveToContent() és ellenőrzi, hogy az aktuális tartalomcsomópont kezdőcímke vagy üres elemcímke-e, és hogy az Name elem tulajdonsága megegyezik-e a megadott argumentummal.

LookupNamespace(String)

Ha egy származtatott osztályban felül van bírálva, felold egy névtérelőtagot az aktuális elem hatókörében.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MoveToAttribute(Int32)

Ha felülbírált egy származtatott osztályban, a megadott indexet tartalmazó attribútumra lép.

MoveToAttribute(String, String)

Ha felül van bírálva egy származtatott osztályban, a megadott LocalName és NamespaceURIa .

MoveToAttribute(String)

Ha felül van bírálva egy származtatott osztályban, a megadott Nameattribútumra lép.

MoveToContent()

Ellenőrzi, hogy az aktuális csomópont tartalom-e (nem üres szóközCDATA, , , Element, EndElementEntityReferencevagy EndEntity) csomópont. Ha a csomópont nem tartalomcsomópont, az olvasó a következő tartalomcsomópontra vagy a fájl végére ugrik. A következő típusú csomópontokat hagyja ki: ProcessingInstruction, DocumentType, Comment, Whitespacevagy SignificantWhitespace.

MoveToContentAsync()

Aszinkron módon ellenőrzi, hogy az aktuális csomópont tartalomcsomópont-e. Ha a csomópont nem tartalomcsomópont, az olvasó a következő tartalomcsomópontra vagy a fájl végére ugrik.

MoveToElement()

Ha felül van bírálva egy származtatott osztályban, az aktuális attribútumcsomópontot tartalmazó elemre kerül.

MoveToFirstAttribute()

Ha felül van bírálva egy származtatott osztályban, az első attribútumra kerül.

MoveToNextAttribute()

Ha felül van bírálva egy származtatott osztályban, lépjen a következő attribútumra.

Read()

Ha felül van bírálva egy származtatott osztályban, beolvassa a következő csomópontot a streamből.

ReadAsync()

Aszinkron módon beolvassa a következő csomópontot a streamből.

ReadAttributeValue()

Ha egy származtatott osztályban felül van bírálva, az attribútum értékét egy vagy több Text, EntityReferencevagy EndEntity csomópontba elemzi.

ReadContentAs(Type, IXmlNamespaceResolver)

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

ReadContentAsAsync(Type, IXmlNamespaceResolver)

Aszinkron módon beolvassa a tartalmat a megadott típusú objektumként.

ReadContentAsBase64(Byte[], Int32, Int32)

Beolvassa a tartalmat, és visszaadja a Base64 dekódolt bináris bájtjait.

ReadContentAsBase64Async(Byte[], Int32, Int32)

Aszinkron módon beolvassa a tartalmat, és visszaadja a Base64 dekódolt bináris bájtjait.

ReadContentAsBinHex(Byte[], Int32, Int32)

Beolvassa a tartalmat, és visszaadja a BinHex dekódolt bináris bájtokat.

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

Aszinkron módon beolvassa a tartalmat, és visszaadja a BinHex dekódolt bináris bájtokat.

ReadContentAsBoolean()

Beolvassa a szöveges tartalmat az aktuális pozícióban Boolean.

ReadContentAsDateTime()

Beolvassa a szöveges tartalmat az aktuális pozícióban objektumként DateTime .

ReadContentAsDateTimeOffset()

Beolvassa a szöveges tartalmat az aktuális pozícióban objektumként DateTimeOffset .

ReadContentAsDecimal()

Beolvassa a szöveges tartalmat az aktuális pozícióban objektumként Decimal .

ReadContentAsDouble()

Az aktuális pozícióban lévő szöveges tartalmat két pontosságú lebegőpontos számként olvassa be.

ReadContentAsFloat()

Az aktuális pozícióban lévő szöveges tartalmat egy pontosságú lebegőpontos számként olvassa be.

ReadContentAsInt()

Az aktuális pozícióban lévő szöveges tartalmat 32 bites aláírt egész számként olvassa be.

ReadContentAsLong()

Az aktuális pozícióban lévő szöveges tartalmat 64 bites aláírt egész számként olvassa be.

ReadContentAsObject()

Beolvassa a szöveges tartalmat az aktuális pozícióban Object.

ReadContentAsObjectAsync()

Aszinkron módon beolvassa a szöveges tartalmat az aktuális pozícióban Object.

ReadContentAsString()

Beolvassa a szöveges tartalmat az aktuális pozícióban objektumként String .

ReadContentAsStringAsync()

Aszinkron módon beolvassa a szöveges tartalmat az aktuális pozícióban objektumként String .

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd a kért típusként beolvassa az elem tartalmát.

ReadElementContentAs(Type, IXmlNamespaceResolver)

Beolvassa az elem tartalmát a kért típusként.

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Aszinkron módon beolvassa az elem tartalmát a kért típusként.

ReadElementContentAsBase64(Byte[], Int32, Int32)

Beolvassa az elemet, és dekódolja a Base64 tartalmat.

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

Aszinkron módon beolvassa az elemet, és dekódolja a Base64 tartalmat.

ReadElementContentAsBinHex(Byte[], Int32, Int32)

Beolvassa az elemet, és dekódolja a BinHex tartalmat.

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Aszinkron módon beolvassa az elemet, és dekódolja a BinHex tartalmat.

ReadElementContentAsBoolean()

Beolvassa az aktuális elemet, és objektumként Boolean adja vissza a tartalmat.

ReadElementContentAsBoolean(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elem nevével, majd beolvassa az aktuális elemet, és objektumként Boolean adja vissza a tartalmat.

ReadElementContentAsDateTime()

Beolvassa az aktuális elemet, és objektumként DateTime adja vissza a tartalmat.

ReadElementContentAsDateTime(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elem nevével, majd beolvassa az aktuális elemet, és objektumként DateTime adja vissza a tartalmat.

ReadElementContentAsDecimal()

Beolvassa az aktuális elemet, és objektumként Decimal adja vissza a tartalmat.

ReadElementContentAsDecimal(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elem nevével, majd beolvassa az aktuális elemet, és objektumként Decimal adja vissza a tartalmat.

ReadElementContentAsDouble()

Beolvassa az aktuális elemet, és dupla pontosságú lebegőpontos számként adja vissza a tartalmat.

ReadElementContentAsDouble(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd beolvassa az aktuális elemet, és dupla pontosságú lebegőpontos számként adja vissza a tartalmat.

ReadElementContentAsFloat()

Beolvassa az aktuális elemet, és egy pontosságú lebegőpontos számként adja vissza a tartalmat.

ReadElementContentAsFloat(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd beolvassa az aktuális elemet, és egy pontosságú lebegőpontos számként adja vissza a tartalmat.

ReadElementContentAsInt()

Beolvassa az aktuális elemet, és 32 bites aláírt egész számként adja vissza a tartalmat.

ReadElementContentAsInt(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd beolvassa az aktuális elemet, és 32 bites aláírt egész számként adja vissza a tartalmat.

ReadElementContentAsLong()

Beolvassa az aktuális elemet, és 64 bites aláírt egész számként adja vissza a tartalmat.

ReadElementContentAsLong(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd beolvassa az aktuális elemet, és 64 bites aláírt egész számként adja vissza a tartalmat.

ReadElementContentAsObject()

Beolvassa az aktuális elemet, és visszaadja a tartalmat Object.

ReadElementContentAsObject(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elemével, majd beolvassa az aktuális elemet, és visszaadja a tartalmat Object.

ReadElementContentAsObjectAsync()

Aszinkron módon beolvassa az aktuális elemet, és visszaadja a tartalmat Object.

ReadElementContentAsString()

Beolvassa az aktuális elemet, és objektumként String adja vissza a tartalmat.

ReadElementContentAsString(String, String)

Ellenőrzi, hogy a megadott helyi név és névtér URI megegyezik-e az aktuális elem nevével, majd beolvassa az aktuális elemet, és objektumként String adja vissza a tartalmat.

ReadElementContentAsStringAsync()

Aszinkron módon beolvassa az aktuális elemet, és objektumként String adja vissza a tartalmat.

ReadElementString()

Csak szöveges elemet olvas be. Javasoljuk azonban, hogy inkább a ReadElementContentAsString() metódust használja, mert egyszerűbb módot kínál a művelet kezelésére.

ReadElementString(String, String)

Ellenőrzi, hogy a LocalName talált elem és NamespaceURI tulajdonságok megegyeznek-e a megadott sztringekkel, mielőtt csak szöveges elemet olvas. Javasoljuk azonban, hogy inkább a ReadElementContentAsString(String, String) metódust használja, mert egyszerűbb módot kínál a művelet kezelésére.

ReadElementString(String)

Ellenőrzi, hogy a Name talált elem tulajdonsága megegyezik-e a megadott sztringgel, mielőtt csak szöveges elemet olvas. Javasoljuk azonban, hogy inkább a ReadElementContentAsString() metódust használja, mert egyszerűbb módot kínál a művelet kezelésére.

ReadEndElement()

Ellenőrzi, hogy az aktuális tartalomcsomópont egy végcímke-e, és az olvasót a következő csomópontra lépteti.

ReadInnerXml()

Ha felül van bírálva egy származtatott osztályban, az összes tartalmat, beleértve a korrektúrát is, sztringként olvassa be.

ReadInnerXmlAsync()

Aszinkron módon sztringként olvassa be az összes tartalmat, beleértve a korrektúrát is.

ReadOuterXml()

Ha egy származtatott osztályban felül van bírálva, beolvassa a tartalmat, beleértve a korrektúrát is, amely a csomópontot és annak összes gyermekét jelöli.

ReadOuterXmlAsync()

Aszinkron módon beolvassa a tartalmat, beleértve a korrektúrát is, amely a csomópontot és annak összes gyermekét jelöli.

ReadStartElement()

Ellenőrzi, hogy az aktuális csomópont elem-e, és a következő csomópontra lépteti az olvasót.

ReadStartElement(String, String)

Ellenőrzi, hogy az aktuális tartalomcsomópont egy adott elem, LocalName és NamespaceURI az olvasót a következő csomópontra lépteti.

ReadStartElement(String)

Ellenőrzi, hogy az aktuális tartalomcsomópont egy adott elem, Name és az olvasót a következő csomópontra lépteti.

ReadString()

Ha egy származtatott osztályban felül van bírálva, egy elem vagy szövegcsomópont tartalmát sztringként olvassa be. Javasoljuk azonban, hogy inkább a ReadElementContentAsString metódust használja, mert egyszerűbb módot kínál a művelet kezelésére.

ReadSubtree()

Egy új XmlReader példányt ad vissza, amely az aktuális csomópont és annak összes leszármazottja olvasására használható.

ReadToDescendant(String, String)

A megadott helyi névvel és névtér URI-val továbbviszi a XmlReader következő leszármazott elemet.

ReadToDescendant(String)

A megadott minősített névvel tovább lép a XmlReader következő leszármazottelemre.

ReadToFollowing(String, String)

Addig olvasható, amíg a megadott helyi névvel és névtér URI-val rendelkező elem nem található.

ReadToFollowing(String)

Addig olvasható, amíg a megadott minősített névvel rendelkező elem nem található.

ReadToNextSibling(String, String)

A következő testvérelemre lép a XmlReader megadott helyi névvel és névtér URI-val.

ReadToNextSibling(String)

A megadott minősített névvel tovább lép a XmlReader következő testvérelemre.

ReadValueChunk(Char[], Int32, Int32)

Egy XML-dokumentumba beágyazott nagy szövegfolyamokat olvas be.

ReadValueChunkAsync(Char[], Int32, Int32)

Aszinkron módon beolvassa az XML-dokumentumokba beágyazott nagy szövegfolyamokat.

ResolveEntity()

Ha egy származtatott osztályban felül van bírálva, feloldja a csomópontok entitáshivatkozását EntityReference .

Skip()

Kihagyja az aktuális csomópont gyermekeit.

SkipAsync()

Aszinkron módon kihagyja az aktuális csomópont gyermekeit.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
IDisposable.Dispose()

Ennek a tagnak a leírását lásd Dispose(): .

A következőre érvényes:

Lásd még