XmlReader Osztály
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.
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
NotationTypeattribútum deklarációban ésNmTokensegyetlenEnumerationattribú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 CheckCharacters false 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 |
Navigálás csomópontokon
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:
- GetAttribute
- MoveToAttribute
- MoveToFirstAttribute
- MoveToNextAttribute
- MoveToElement
- ReadAttributeValue
- ReadSubtree
- ResolveEntity
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 XML külső entitások feloldásának tiltására tett kísérlet esetén használható ThrowingResolver .
- Ne engedélyezze a XmlReader külső erőforrások megnyitását a XmlReaderSettings.XmlResolver tulajdonság
nullbeállításával.
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
nullaz, 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
IStreamimplementá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 |
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 |
| 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 |
| XmlSpace |
Ha felül van bírálva egy származtatott osztályban, lekéri az aktuális |
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öz |
| 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 |
| 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 |
| ReadContentAsBinHexAsync(Byte[], Int32, Int32) |
Aszinkron módon beolvassa a tartalmat, és visszaadja a |
| ReadContentAsBoolean() |
Beolvassa a szöveges tartalmat az aktuális pozícióban |
| 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 |
| ReadElementContentAsBase64Async(Byte[], Int32, Int32) |
Aszinkron módon beolvassa az elemet, és dekódolja a |
| ReadElementContentAsBinHex(Byte[], Int32, Int32) |
Beolvassa az elemet, és dekódolja a |
| ReadElementContentAsBinHexAsync(Byte[], Int32, Int32) |
Aszinkron módon beolvassa az elemet, és dekódolja a |
| 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 |
| 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 |
| ReadToNextSibling(String) |
A megadott minősített névvel tovább lép a |
| 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 |
| 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(): . |