Ten artykuł został przetłumaczony przez maszynę. Aby wyświetlić jego treść w języku angielskim, zaznacz pole wyboru Angielski. Możesz też wyświetlić angielski tekst w okienku wyskakującym, przesuwając wskaźnik myszy nad konkretny tekst”.
Tłumaczenie
Angielski

Klasa XmlReader

.NET Framework (current version)
 

Data opublikowania: październik 2016

Reprezentuje czytnika, która zapewnia szybki, niebuforowany, dostęp tylko do przodu do danych XML.

Aby przeglądać kod źródłowy .NET Framework dla tego typu, zobacz Reference Source.

Przestrzeń nazw:   System.Xml
Zestaw:  System.Xml (w System.Xml.dll)


public abstract class XmlReader : IDisposable

NazwaOpis
System_CAPS_protmethodXmlReader()

Inicjuje nowe wystąpienie XmlReader klasy.

NazwaOpis
System_CAPS_pubpropertyAttributeCount

Gdy zostanie zastąpione w klasie pochodnej, pobiera liczby atrybutów w bieżącym węźle.

System_CAPS_pubpropertyBaseURI

Gdy zostanie zastąpione w klasie pochodnej, pobiera podstawowy identyfikator URI bieżącego węzła.

System_CAPS_pubpropertyCanReadBinaryContent

Pobiera lub ustala wartość wskazującą czy XmlReader implementuje metody odczytać zawartość binarna.

System_CAPS_pubpropertyCanReadValueChunk

Pobiera lub ustala wartość wskazującą czy XmlReader implementuje ReadValueChunk metody.

System_CAPS_pubpropertyCanResolveEntity

Pobiera wartość wskazującą, można przeanalizować i rozwiązać jednostek to odczytywania.

System_CAPS_pubpropertyDepth

Gdy zostanie zastąpione w klasie pochodnej, pobiera głębokość bieżącego węzła w dokumencie XML.

System_CAPS_pubpropertyEOF

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość wskazującą, czy czytnik jest umieszczany na koniec strumienia.

System_CAPS_pubpropertyHasAttributes

Pobiera wartość wskazującą, czy bieżący węzeł ma żadnych atrybutów.

System_CAPS_pubpropertyHasValue

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł może mieć Value.

System_CAPS_pubpropertyIsDefault

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł jest atrybut, który został wygenerowany na podstawie wartości domyślnej zdefiniowanej w DTD lub schematu.

System_CAPS_pubpropertyIsEmptyElement

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł jest elementem pustym (na przykład <MyElement/>).

System_CAPS_pubpropertyItem[Int32]

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu o określonym indeksie.

System_CAPS_pubpropertyItem[String]

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu z określonym Name.

System_CAPS_pubpropertyItem[String, String]

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu z określonym LocalName i NamespaceURI.

System_CAPS_pubpropertyLocalName

Gdy zostanie zastąpione w klasie pochodnej, pobiera lokalna nazwa bieżącego węzła.

System_CAPS_pubpropertyName

Gdy zostanie zastąpione w klasie pochodnej, pobiera kwalifikowana nazwa bieżącego węzła.

System_CAPS_pubpropertyNamespaceURI

Gdy zostanie zastąpione w klasie pochodnej, pobiera obszaru nazw URI (zgodnie z definicją w specyfikacji przestrzeni nazw W3C) węzła na jest umieszczany czytnika.

System_CAPS_pubpropertyNameTable

Gdy zostanie zastąpione w klasie pochodnej, pobiera XmlNameTable skojarzone z tą implementacją.

System_CAPS_pubpropertyNodeType

Gdy zostanie zastąpione w klasie pochodnej, pobiera typ bieżącego węzła.

System_CAPS_pubpropertyPrefix

Gdy zostanie zastąpione w klasie pochodnej, pobiera prefiks przestrzeni nazw skojarzonych z bieżącego węzła.

System_CAPS_pubpropertyQuoteChar

Gdy zostanie zastąpione w klasie pochodnej, pobiera znak cudzysłowu ująć węzeł atrybutu.

System_CAPS_pubpropertyReadState

Gdy zostanie zastąpione w klasie pochodnej, pobiera stan czytnika.

System_CAPS_pubpropertySchemaInfo

Pobiera informacje schematu, który został przypisany do bieżącego węzła w wyniku sprawdzania poprawności schematu.

System_CAPS_pubpropertySettings

Pobiera XmlReaderSettings użytej do utworzenia tego obiektu XmlReader wystąpienia.

System_CAPS_pubpropertyValue

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartości tekstowej bieżącego węzła.

System_CAPS_pubpropertyValueType

Pobiera typ środowiska uruchomieniowego języka wspólnego (CLR) dla bieżącego węzła.

System_CAPS_pubpropertyXmlLang

Gdy zostanie zastąpione w klasie pochodnej, pobiera bieżącą xml:lang zakresu.

System_CAPS_pubpropertyXmlSpace

Gdy zostanie zastąpione w klasie pochodnej, pobiera bieżącą xml:space zakresu.

NazwaOpis
System_CAPS_pubmethodClose()

Gdy zostanie zastąpione w klasie pochodnej, zmienia ReadState do Closed.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream)

Tworzy nowy XmlReader wystąpienia określonego strumienia przy użyciu ustawień domyślnych.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings)

Tworzy nowy XmlReader wystąpienia określonego strumienia i ustawieniami.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, String)

Tworzy nowy XmlReader wystąpienia przy użyciu określonego strumienia, podstawowy identyfikator URI i ustawień.

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, XmlParserContext)

Tworzy nowy XmlReader wystąpienia przy użyciu określonego strumienia, ustawienia i kontekstu informacje do analizowania.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String)

Tworzy nowy XmlReader wystąpienia z określonego identyfikatora URI.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings)

Tworzy nowy XmlReader wystąpienia przy użyciu określonego identyfikatora URI i ustawień.

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings, XmlParserContext)

Tworzy nowy XmlReader wystąpienia przy użyciu określonego identyfikatora URI, ustawienia i kontekstu informacje do analizy.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader)

Tworzy nowy XmlReader wystąpienia przy użyciu czytnika określonego tekstu.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings)

Tworzy nowy XmlReader wystąpienia przy użyciu ustawień i odczytywania określonego tekstu.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, String)

Tworzy nowy XmlReader wystąpienia przy użyciu czytnika określonego tekstu, ustawienia i podstawowy identyfikator URI.

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, XmlParserContext)

Tworzy nowy XmlReader wystąpienia przy użyciu informacji czytnika, ustawień i kontekstu określonego tekstu do analizowania.

System_CAPS_pubmethodSystem_CAPS_staticCreate(XmlReader, XmlReaderSettings)

Tworzy nowy XmlReader wystąpienia przy użyciu określonego czytnika XML i ustawień.

System_CAPS_pubmethodDispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie programu XmlReader klasy.

System_CAPS_protmethodDispose(Boolean)

Zwalnia niezarządzane zasoby używane przez XmlReader i opcjonalnie zwalnia zasoby zarządzane.

System_CAPS_pubmethodEquals(Object)

Sprawdza, czy podany obiekt jest równy aktualnemu obiektowi (Dziedziczone z Object).

System_CAPS_protmethodFinalize()

Pozwala, aby obiekt spróbował zwolnić zasoby i wykonał inne operacje czyszczenia, zanim zostanie odzyskany przez moduł zbierający elementy bezużyteczne. (Dziedziczone z Object).

System_CAPS_pubmethodGetAttribute(Int32)

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu o określonym indeksie.

System_CAPS_pubmethodGetAttribute(String)

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu z określonym Name.

System_CAPS_pubmethodGetAttribute(String, String)

Gdy zostanie zastąpione w klasie pochodnej, pobiera wartość atrybutu z określonym LocalName i NamespaceURI.

System_CAPS_pubmethodGetHashCode()

Służy jako domyślna funkcji mieszania.(Dziedziczone z Object).

System_CAPS_pubmethodGetType()

Pobiera Type bieżącego wystąpienia.(Dziedziczone z Object).

System_CAPS_pubmethodGetValueAsync()

Asynchroniczne pobiera wartość bieżącego węzła.

System_CAPS_pubmethodSystem_CAPS_staticIsName(String)

Zwraca wartość wskazującą, czy argument ciągu jest prawidłową nazwą XML.

System_CAPS_pubmethodSystem_CAPS_staticIsNameToken(String)

Zwraca wartość wskazującą, czy argument ciągu jest prawidłowy token Nazwa XML.

System_CAPS_pubmethodIsStartElement()

Wywołania MoveToContent i sprawdza, czy bieżącego węzła zawartości jest tag początkowy lub tagu pustego elementu.

System_CAPS_pubmethodIsStartElement(String)

Wywołania MoveToContent i testuje Jeśli bieżącego węzła zawartości jest tag początkowy lub tagu pustego elementu i Name właściwość elementu znaleziono odpowiada podany argument.

System_CAPS_pubmethodIsStartElement(String, String)

Wywołania MoveToContent i testuje Jeśli bieżącego węzła zawartości jest tag początkowy lub tagu pustego elementu i LocalName i NamespaceURI Właściwości elementu znaleziono zgodny danego ciągów.

System_CAPS_pubmethodLookupNamespace(String)

Gdy zostanie zastąpione w klasie pochodnej, rozpoznaje prefiks przestrzeni nazw w zakresie bieżącego elementu.

System_CAPS_protmethodMemberwiseClone()

Tworzy płytką kopię bieżącego Object.(Dziedziczone z Object).

System_CAPS_pubmethodMoveToAttribute(Int32)

Gdy zostanie zastąpione w klasie pochodnej, przesuwa się do atrybutu o określonym indeksie.

System_CAPS_pubmethodMoveToAttribute(String)

Gdy zostanie zastąpione w klasie pochodnej, przesuwa się do atrybutu z określonym Name.

System_CAPS_pubmethodMoveToAttribute(String, String)

Gdy zostanie zastąpione w klasie pochodnej, przesuwa się do atrybutu z określonym LocalName i NamespaceURI.

System_CAPS_pubmethodMoveToContent()

Sprawdza, czy zawartość bieżącego węzła (- biały znak tekstu, CDATA, Element, EndElement, EntityReference, lub EndEntity) węzła. Jeśli węzeł nie jest węzłem zawartości, czytnik przyszłość przejdzie do następnego węzła zawartości lub koniec pliku. Nakłada się na węzłach następującego typu: ProcessingInstruction, DocumentType, Comment, Whitespace, lub SignificantWhitespace.

System_CAPS_pubmethodMoveToContentAsync()

Asynchroniczne sprawdza, czy bieżący węzeł jest węzłem zawartości. Jeśli węzeł nie jest węzłem zawartości, czytnik przyszłość przejdzie do następnego węzła zawartości lub koniec pliku.

System_CAPS_pubmethodMoveToElement()

Gdy zostanie zastąpione w klasie pochodnej, przesuwa się do elementu, który zawiera bieżący węzeł atrybutu.

System_CAPS_pubmethodMoveToFirstAttribute()

Gdy zostanie zastąpione w klasie pochodnej, przejście do pierwszego atrybutu.

System_CAPS_pubmethodMoveToNextAttribute()

Gdy zostanie zastąpione w klasie pochodnej, przesuwa się do atrybutu dalej.

System_CAPS_pubmethodRead()

Gdy zostanie zastąpione w klasie pochodnej, odczytuje następnego węzła ze strumienia.

System_CAPS_pubmethodReadAsync()

Asynchroniczne odczytuje następnego węzła ze strumienia.

System_CAPS_pubmethodReadAttributeValue()

Gdy zostanie zastąpione w klasie pochodnej, analizuje wartość atrybutu do jednej lub więcej Text, EntityReference, lub EndEntity węzłów.

System_CAPS_pubmethodReadContentAs(Type, IXmlNamespaceResolver)

Odczytuje zawartość jako obiekt określonego typu.

System_CAPS_pubmethodReadContentAsAsync(Type, IXmlNamespaceResolver)

Asynchroniczne odczytuje zawartość jako obiekt określonego typu.

System_CAPS_pubmethodReadContentAsBase64(Byte[], Int32, Int32)

Odczytuje zawartość i zwraca wartość w formacie Base64 zdekodować bajtów binarnych.

System_CAPS_pubmethodReadContentAsBase64Async(Byte[], Int32, Int32)

Asynchroniczne odczytuje zawartość i zwraca wartość w formacie Base64 zdekodować bajtów binarnych.

System_CAPS_pubmethodReadContentAsBinHex(Byte[], Int32, Int32)

Odczytuje zawartość i zwraca BinHex zdekodować bajtów binarnych.

System_CAPS_pubmethodReadContentAsBinHexAsync(Byte[], Int32, Int32)

Asynchroniczne odczytuje zawartość i zwraca BinHex zdekodować bajtów binarnych.

System_CAPS_pubmethodReadContentAsBoolean()

Odczytuje zawartość tekstu w bieżącym położeniu jako Boolean.

System_CAPS_pubmethodReadContentAsDateTime()

Odczytuje zawartość tekstu w bieżącym położeniu jako DateTime obiektu.

System_CAPS_pubmethodReadContentAsDateTimeOffset()

Odczytuje zawartość tekstu w bieżącym położeniu jako DateTimeOffset obiektu.

System_CAPS_pubmethodReadContentAsDecimal()

Odczytuje zawartość tekstu w bieżącym położeniu jako Decimal obiektu.

System_CAPS_pubmethodReadContentAsDouble()

Odczytuje zawartość tekstu w bieżącym położeniu jako liczba zmiennoprzecinkowa podwójnej precyzji.

System_CAPS_pubmethodReadContentAsFloat()

Odczytuje zawartość tekstu w bieżącym położeniu jako pojedynczej precyzji liczb zmiennoprzecinkowych.

System_CAPS_pubmethodReadContentAsInt()

Odczytuje zawartość tekstu w bieżącym położeniu jako 32-bitowej liczby całkowitej ze znakiem.

System_CAPS_pubmethodReadContentAsLong()

Odczytuje zawartość tekstu w bieżącym położeniu jako 64-bitowa liczba całkowita.

System_CAPS_pubmethodReadContentAsObject()

Odczytuje zawartość tekstu w bieżącym położeniu jako Object.

System_CAPS_pubmethodReadContentAsObjectAsync()

Asynchroniczne odczytuje zawartość tekstu w bieżącym położeniu jako Object.

System_CAPS_pubmethodReadContentAsString()

Odczytuje zawartość tekstu w bieżącym położeniu jako String obiektu.

System_CAPS_pubmethodReadContentAsStringAsync()

Asynchroniczne odczytuje zawartość tekstu w bieżącym położeniu jako String obiektu.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver)

Odczytuje zawartość elementu jako żądanego typu.

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, a następnie odczytuje zawartość elementu jako żądanego typu.

System_CAPS_pubmethodReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Asynchroniczne odczytuje zawartość elementu jako żądanego typu.

System_CAPS_pubmethodReadElementContentAsBase64(Byte[], Int32, Int32)

Odczytuje elementu i dekoduje Base64 zawartości.

System_CAPS_pubmethodReadElementContentAsBase64Async(Byte[], Int32, Int32)

Asynchroniczne odczytuje elementu i dekoduje Base64 zawartości.

System_CAPS_pubmethodReadElementContentAsBinHex(Byte[], Int32, Int32)

Odczytuje elementu i dekoduje BinHex zawartości.

System_CAPS_pubmethodReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Asynchroniczne odczytuje elementu i dekoduje BinHex zawartości.

System_CAPS_pubmethodReadElementContentAsBoolean()

Odczytuje bieżący element i zwraca zawartość jako Boolean obiektu.

System_CAPS_pubmethodReadElementContentAsBoolean(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako Boolean obiektu.

System_CAPS_pubmethodReadElementContentAsDateTime()

Odczytuje bieżący element i zwraca zawartość jako DateTime obiektu.

System_CAPS_pubmethodReadElementContentAsDateTime(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako DateTime obiektu.

System_CAPS_pubmethodReadElementContentAsDecimal()

Odczytuje bieżący element i zwraca zawartość jako Decimal obiektu.

System_CAPS_pubmethodReadElementContentAsDecimal(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako Decimal obiektu.

System_CAPS_pubmethodReadElementContentAsDouble()

Odczytuje bieżący element i zwraca zawartość jako liczba zmiennoprzecinkowa podwójnej precyzji.

System_CAPS_pubmethodReadElementContentAsDouble(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącym elementem, a następnie odczytuje bieżącego elementu i zwraca zawartość jako liczba zmiennoprzecinkowa podwójnej precyzji.

System_CAPS_pubmethodReadElementContentAsFloat()

Odczytuje bieżący element i zwraca zawartość jako liczba zmiennoprzecinkowa pojedynczej precyzji.

System_CAPS_pubmethodReadElementContentAsFloat(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącym elementem, a następnie odczytuje bieżącego elementu i zwraca zawartość jako liczba zmiennoprzecinkowa pojedynczej precyzji.

System_CAPS_pubmethodReadElementContentAsInt()

Odczytuje bieżący element i zwraca zawartość jako 32-bitowej liczby całkowitej ze znakiem.

System_CAPS_pubmethodReadElementContentAsInt(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako 32-bitowej liczby całkowitej ze znakiem.

System_CAPS_pubmethodReadElementContentAsLong()

Odczytuje bieżący element i zwraca zawartość jako 64-bitowa liczba całkowita.

System_CAPS_pubmethodReadElementContentAsLong(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako 64-bitowa liczba całkowita.

System_CAPS_pubmethodReadElementContentAsObject()

Odczytuje bieżący element i zwraca zawartość jako Object.

System_CAPS_pubmethodReadElementContentAsObject(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako Object.

System_CAPS_pubmethodReadElementContentAsObjectAsync()

Asynchroniczne odczytuje bieżący element i zwraca zawartość jako Object.

System_CAPS_pubmethodReadElementContentAsString()

Odczytuje bieżący element i zwraca zawartość jako String obiektu.

System_CAPS_pubmethodReadElementContentAsString(String, String)

Sprawdza, czy określona nazwa lokalnego i identyfikator URI przestrzeni nazw zgodny z bieżącego elementu, następnie odczytuje bieżący element i zwraca zawartość jako String obiektu.

System_CAPS_pubmethodReadElementContentAsStringAsync()

Asynchroniczne odczytuje bieżący element i zwraca zawartość jako String obiektu.

System_CAPS_pubmethodReadElementString()

Odczytuje tylko do tekstu elementu. Jednak zaleca się używanie ReadElementContentAsString() Metoda zamiast tego, ponieważ zapewnia bardziej skomplikowany sposób obsługi tej operacji.

System_CAPS_pubmethodReadElementString(String)

Sprawdza, czy Name właściwość elementu znaleziono pasuje do ciągu danego przed odczytaniem elementu tylko tekst. Jednak zaleca się używanie ReadElementContentAsString() Metoda zamiast tego, ponieważ zapewnia bardziej skomplikowany sposób obsługi tej operacji.

System_CAPS_pubmethodReadElementString(String, String)

Sprawdza, czy LocalName i NamespaceURI Właściwości elementu znaleziono dopasowuje ciągi danego przed odczytaniem elementu tylko tekst. Jednak zaleca się używanie ReadElementContentAsString(String, String) Metoda zamiast tego, ponieważ zapewnia bardziej skomplikowany sposób obsługi tej operacji.

System_CAPS_pubmethodReadEndElement()

Sprawdza, czy bieżący węzeł zawartości jest tagu końcowego i przechodzi do następnego węzła czytnika.

System_CAPS_pubmethodReadInnerXml()

Gdy zostanie zastąpione w klasie pochodnej, odczytuje całą zawartość, w tym znaczników jako ciąg.

System_CAPS_pubmethodReadInnerXmlAsync()

Odczytuje asynchronicznie całą zawartość, w tym znaczników jako ciąg.

System_CAPS_pubmethodReadOuterXml()

Gdy zostanie zastąpione w klasie pochodnej, odczytuje zawartość, w tym znaczników, reprezentujący tego węzła i wszystkich jego obiektów podrzędnych.

System_CAPS_pubmethodReadOuterXmlAsync()

Asynchroniczne odczytuje zawartość, w tym znaczników reprezentujących tego węzła i wszystkich jego obiektów podrzędnych.

System_CAPS_pubmethodReadStartElement()

Sprawdza, czy bieżący węzeł jest elementem i przechodzi do następnego węzła czytnika.

System_CAPS_pubmethodReadStartElement(String)

Sprawdza, czy element z bieżącego węzła zawartości danego Name i przechodzi do następnego węzła czytnika.

System_CAPS_pubmethodReadStartElement(String, String)

Sprawdza, czy element z bieżącego węzła zawartości danego LocalName i NamespaceURI i przechodzi do następnego węzła czytnika.

System_CAPS_pubmethodReadString()

Gdy zostanie zastąpione w klasie pochodnej, odczytuje zawartość element lub tekst węzła jako ciąg. Jednak zaleca się używanie ReadElementContentAsString Metoda zamiast tego, ponieważ zapewnia bardziej skomplikowany sposób obsługi tej operacji.

System_CAPS_pubmethodReadSubtree()

Zwraca nowy XmlReader wystąpienia, który może służyć do odczytu bieżącego węzła i wszystkich jego obiektów podrzędnych.

System_CAPS_pubmethodReadToDescendant(String)

Przesuwa XmlReader do następnego elementu podrzędnego elementu z określoną nazwą kwalifikowaną.

System_CAPS_pubmethodReadToDescendant(String, String)

Przesuwa XmlReader do następnego elementu podrzędnego elementu z określonym lokalna nazwa i identyfikator URI przestrzeni nazw.

System_CAPS_pubmethodReadToFollowing(String)

Odczytuje, dopóki nie zostanie znaleziony element z określoną nazwą kwalifikowaną.

System_CAPS_pubmethodReadToFollowing(String, String)

Odczytuje, dopóki nie zostanie znaleziony element z określonym lokalna nazwa i identyfikator URI przestrzeni nazw.

System_CAPS_pubmethodReadToNextSibling(String)

Przesuwa XmlReader na następny element równorzędny z określoną nazwą kwalifikowaną.

System_CAPS_pubmethodReadToNextSibling(String, String)

Przesuwa XmlReader na następny element równorzędny z określonym lokalna nazwa i identyfikator URI przestrzeni nazw.

System_CAPS_pubmethodReadValueChunk(Char[], Int32, Int32)

Odczytuje duże strumienie tekstu osadzony w dokumencie XML.

System_CAPS_pubmethodReadValueChunkAsync(Char[], Int32, Int32)

Asynchroniczne odczytuje duże strumienie tekstu osadzony w dokumencie XML.

System_CAPS_pubmethodResolveEntity()

Gdy zostanie zastąpione w klasie pochodnej, usuwa odwołanie do jednostki dla EntityReference węzłów.

System_CAPS_pubmethodSkip()

Pomija elementy podrzędne bieżącego węzła.

System_CAPS_pubmethodSkipAsync()

Asynchroniczne pomija elementy podrzędne bieżącego węzła.

System_CAPS_pubmethodToString()

Zwraca łańcuch znaków, reprezentujący aktualny obiekt. (Dziedziczone z Object).

System_CAPS_noteUwaga

Aby wyświetlić kod źródłowy .NET Framework dla tego typu, zobacz Reference Source. Przeglądanie kodu źródłowego w trybie online, Pobierz odwołanie do przeglądania w trybie offline i postępuj zgodnie z instrukcjami źródła (w tym poprawki i aktualizacje) podczas debugowania. see instructions.

XmlReader zapewnia dostęp tylko do przodu, tylko do odczytu do danych XML w adocument lub strumienia. Ta klasa jest zgodny ze W3C Extensible Markup Language (XML) 1.0 (fourth edition) i Namespaces in XML 1.0 (third edition) zalecenia.

XmlReadermetody pozwalają przechodzić danych XML i czytać zawartość węzła. Właściwości klasy odzwierciedlają wartości z bieżącego węzła jest, gdy czytnik jest umieszczony. ReadState Wartość właściwości wskazuje bieżący stan czytnika XML. Na przykład, wartość właściwości jest równa Initial przez XmlReader.Read metody i Closed przez XmlReader.Close metody. XmlReader udostępnia również sprawdza zgodność danych i weryfikacji względem DTD lub schematu.

XmlReaderużywany jest model ściągania do pobierania danych. Ten model:

  • Upraszcza zarządzanie stanem fizycznych, z góry na dół Uszczegółowienie procedurach.

  • Obsługuje wiele strumieni danych wejściowych i tworzenie warstw.

  • Pozwala to klientowi na nadać analizator buforu, w którym są zapisywane bezpośrednio ciągu, a w związku z tym pozwala uniknąć konieczności kopiowania dodatkowy ciąg.

  • Obsługuje selektywnego przetwarzania. Klienta można pominąć elementów i przetworzyć te, które mogą być przydatne do aplikacji. Można również ustawić właściwości z wyprzedzeniem, aby zarządzać sposób przetwarzania strumień XML (na przykład normalizacji).

W tej sekcji:

Tworzenie czytnika XML
Sprawdzanie poprawności danych XML
Zgodność danych
Przechodzenie przez węzły
Elementy XML odczytu
Atrybuty XML odczytu
Zawartość XML odczytu
Konwertowanie na typy CLR
Programowanie asynchroniczne
Zagadnienia dotyczące zabezpieczeń

Użyj Create metodę w celu utworzenia XmlReaderwystąpienia.

Mimo że program .NET Framework oferuje konkretne implementacje XmlReader klasy, takie jak XmlTextReader, XmlNodeReader, i XmlValidatingReader klas, zaleca się używać specjalnych klas tylko w tych scenariuszach:

  • Jeżeli chcesz poddrzewo XML DOM readan z XmlNode używać XmlNodeReader klasy. (Jednak ta klasa nie obsługuje sprawdzania DTD lub schematu).

  • Jeśli należy rozwinąć jednostek na żądanie, nie ma tekstu zawartości znormalizowane lub nie mają atrybutów zwracanych w domyślnej, użyj XmlTextReader klasy.

Aby określić zestaw funkcji, które chcesz włączyć na czytnik XML, należy przekazać System.Xml.XmlReaderSettings obiektu do Create metody. Można użyć jednej System.Xml.XmlReaderSettings obiekt tworzenie wielu czytników za pomocą funkcji lub zmodyfikuj System.Xml.XmlReaderSettingsobiekt, aby utworzyć nowego czytnika z innym zestawem funkcji. Można też łatwo Dodaj funkcje do istniejącej czytnika.

Jeśli nie używaszSystem.Xml.XmlReaderSettingsobiektu, używane są ustawienia domyślne. Zobacz Create odwołanie do strony szczegółów.

XmlReader zgłasza XmlException na języku XML przeanalizować błędy. Po jest zgłaszany wyjątek, stan czytnika nie jest przewidywalne. Na przykład typ węzła zgłoszone może być inny niż typ węzła rzeczywiste bieżącego węzła. Użyj ReadState właściwość, aby sprawdzić, czy czytnik jest w stanie błędu.

Aby definiują strukturę dokumentu XML i jego relacje elementu, typy danych i ograniczenia zawartości, należy użyć definicji typu dokumentu (DTD) lub schematu języka (XSD) definicji schematu XML. Dokument XML jest uważany za być poprawnie sformułowana spełniający wszystkie wymagania syntaktycznych zdefiniowany przez W3C XML 1.0 Recommendation. Uważa się nieprawidłowy, jeśli jest poprawnie sformułowany, a także odpowiada ograniczeń zdefiniowanych przez jego DTD lub schematu. (Zobacz W3C XML Schema Part 1: Structures i W3C XML Schema Part 2: Datatypeszalecenia.) W związku z tym mimo że wszystkie ważne dokumenty XML są poprawnie sformułowane, nie wszystkie poprawnie sformułowany dokumentów XML są prawidłowe.

Można sprawdzić poprawność danych przed DTD, wbudowanego schematu XSD lub schematu XSD przechowywane w XmlSchemaSet obiektu (pamięci podręcznej); te scenariusze są opisane na Create odwołania do stron. XmlReader nie obsługuje sprawdzanie poprawności schematu danych XML (XDR).

Użyj następujących ustawień na XmlReaderSettings klasę, aby określić typ sprawdzania poprawności, jeśli takieXmlReader wystąpienie obsługuje.

Użyj tego XmlReaderSettings elementu członkowskiego

Aby określić

DtdProcessing Właściwość

Określa, czy zezwolić na przetwarzanie DTD. Wartość domyślna to aby uniemożliwić przetwarzanie DTD.

ValidationType Właściwość

Czy czytnik należy sprawdzić poprawność danych i typ sprawdzania poprawności (DTD lub schematu). Wartość domyślna to brak sprawdzania poprawności danych.

ValidationEventHandler zdarzenia

Program obsługi zdarzeń do otrzymywania informacji na temat zdarzenia sprawdzania poprawności. Jeśli program obsługi zdarzeń nie jest podany, XmlException jest zgłaszany w przypadku pierwszy błędu sprawdzania poprawności.

ValidationFlags Właściwość

Sprawdzanie poprawności dodatkowe opcje za pośrednictwem XmlSchemaValidationFlags elementów członkowskich wyliczenia:

  • AllowXmlAttributes— Umożliwia atrybutów XML (xml:*) w dokumentach wystąpienia nawet wtedy, gdy nie są one definiowane w schemacie. Atrybuty są prawidłowe na podstawie ich typu danych. Zobacz XmlSchemaValidationFlags odwołania do stron ustawienie do użycia w określonych scenariuszy. (Domyślnie wyłączone.)

  • ProcessIdentityConstraints --Przetworzyć ograniczenia tożsamości (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) podczas sprawdzania poprawności. (Opcja domyślna).

  • ProcessSchemaLocation --Przetworzyć schematy określony przez xsi:schemaLocation lub xsi:noNamespaceSchemaLocation atrybutu. (Opcja domyślna).

  • ProcessInlineSchema--Przetworzyć wbudowanego schematów XML podczas sprawdzania poprawności. (Domyślnie wyłączone.)

  • ReportValidationWarnings--Raport zdarzeń w przypadku ostrzeżenia sprawdzania poprawności. Gdy nie DTD lub schematu XML, sprawdzanie poprawności określonego elementu lub atrybutu przed zwykle generowane ostrzeżenie. ValidationEventHandler Jest używany dla powiadomień. (Domyślnie wyłączone.)

Schemas

XmlSchemaSet Weryfikacji.

XmlResolver Właściwość

XmlResolverRozwiązywanie i uzyskiwania dostępu do zasobów zewnętrznych. Może to dotyczyć podmiotów zewnętrznych, takich jak DTD i schematy i wszystkie xs:include lub xs:import elementów zawartych w schemacie XML. Jeśli nie określisz XmlResolver, XmlReader używa domyślnego XmlUrlResolver bez poświadczeń użytkownika.

Czytelnicy XML, które są tworzone przez Create methodmeet następujące wymagania zgodności przez domyślny:

  • Wartość atrybutu i nowych wierszy są normalizowane zgodnie z W3C XML 1.0 Recommendation.

  • Automatycznie zostaną rozwinięte wszystkie jednostki.

  • Zawsze są dodawane domyślne atrybutów zadeklarowany w definicji typu dokumentu, nawet wtedy, gdy czytnik nie zweryfikować.

  • Deklaracja XML prefiks mapowane na przestrzeń nazw XML prawidłowy identyfikator URI jest dozwolone.

  • W jednej nazwy notacji NotationType deklaracji atrybutu iNmTokens w jednej Enumeration atrybutu declarationare distinct.

Użyj tych XmlReaderSettings Właściwości, aby określić typ zgodność sprawdza, czy użytkownik chce włączyć:

Użyj tego XmlReaderSettings Właściwość

Do

Domyślny

CheckCharacters Właściwość

Włączanie lub wyłączanie kontroli dla następujących elementów:

  • Znaki są w zakresie prawne znaków XML, zgodnie z definicją w 2.2 Characters sekcji zalecenia 1.0 W3C XML.

  • Wszystkie nazwy XML są prawidłowe, zgodnie z definicją w 2.3 Common Syntactic Constructs sekcji zalecenia 1.0 W3C XML.

Gdy ta właściwość ma wartość true (ustawienie domyślne), XmlException wyjątku, jeśli plik XML zawiera niedozwolone znaki lub nieprawidłowych nazw XML (na przykład nazwę elementu rozpoczyna się od numeru).

Znak i sprawdzanie nazw jest włączone.

Ustawienie CheckCharacters do false wyłącza znak sprawdzanie odwołania do jednostki znaków. Jeśli czytnik jest przetwarzanie danych tekstowych, zawsze sprawdza czy nazwy XML są prawidłowe, niezależnie od tego ustawienia.

System_CAPS_noteUwaga

XML 1.0 zalecenie wymaga zgodności na poziomie dokumentu, gdy występuje DTD. W związku z tym Jeśli czytnik jest skonfigurowany do obsługi ConformanceLevel.Fragment, ale zawiera dane XML definicji typu dokumentu (DTD), XmlException jest zgłaszany.

ConformanceLevel Właściwość

Wybierz poziom zgodności, aby wymusić:

Jeśli dane nie są w zgodności, XmlException wyjątku.

Document

Bieżący węzeł jest węzłem XML obecnie znajduje czytnika XML. Wszystkie XmlReadermetody wykonywania operacji w odniesieniu do tego węzła i wszystkich XmlReaderWłaściwości odzwierciedla wartości bieżącego węzła.

Następujących metod można ułatwić nawigować przez węzły i analizowania danych.

Użyj tego XmlReaderSettings — Metoda

Do

Read

Przeczytaj pierwszy węzeł i przechodzić przez jeden węzeł strumienia w czasie. Takie połączenia są zazwyczaj wykonywane wewnątrz while pętli.

Użyj NodeType właściwość, aby uzyskać typu bieżącego węzła (na przykład, atrybut, komentarz, element i tak dalej).

Skip

Pomiń elementy podrzędne bieżącego węzła i przejście do następnego węzła.

MoveToContent i MoveToContentAsync

Pomiń węzły-content i przejść do następnego węzła zawartości albo do końca pliku.

Węzły zawartości nie obejmują ProcessingInstruction, DocumentType, Comment, Whitespace, i SignificantWhitespace.

Węzły zawierać - biały znak tekstu, zawartości CDATA, EntityReference , iEndEntity.

ReadSubtree

Przeczytaj element i wszystkie jego elementy podrzędne i zwraca nową XmlReader wystąpienia jest równa ReadState.Initial.

Ta metoda jest przydatna przy tworzeniu granice wokół elementów XML; na przykład jeśli chcesz przekazać dane do innego składnika do przetwarzania i chcesz ograniczyć ilość danych składnika można uzyskać dostęp.

Zobacz XmlReader.Read odwołania do stron przykład przechodzenie przez jeden węzeł strumienia tekstu w czasie i wyświetlanie typu każdego węzła.

W poniższych sekcjach opisano, jak można znaleźć konkretne typy danych, takich jak elementy, atrybuty i wpisanych danych.

Poniższa tabela zawiera listę właściwości i metod który XmlReader klasy zapewnia dla przetwarzania elementów. Po XmlReader jest umieszczany w elemencie, właściwości węzła, takich jak Name, odzwierciedlają wartości elementu. Oprócz członków opisane poniżej, właściwości i metod ogólnych XmlReader klasa służy do przetwarzania elementów. Na przykład można użyć ReadInnerXml metodę w celu odczytania zawartości elementu.

System_CAPS_noteUwaga

W sekcji 3.1 W3C XML 1.0 Recommendation definicji początkowe znaczniki, kończyć znaczniki i znaczniki pustego elementu.

Użyj tego XmlReader elementu członkowskiego

Do

IsStartElement Metoda

Sprawdź, czy bieżący węzeł jest tag początkowy lub tag pusty element.

ReadStartElement Metoda

Sprawdź, czy bieżący węzeł jest elementem i przejść do następnego węzła czytnik (wywołania IsStartElement następuje Read).

ReadEndElement Metoda

Sprawdź, czy bieżący węzeł jest tagu końcowego i przejść do następnego węzła czytnika.

ReadElementString Metoda

Przeczytaj element tekstowy.

ReadToDescendant Metoda

Czytnik XML przejście do następnego elementu podrzędnego (podrzędnych) o określonej nazwie.

ReadToNextSibling Metoda

Czytnik XML przejście do następnego elementu element równorzędny o określonej nazwie.

IsEmptyElement Właściwość

Sprawdź, czy bieżący element ma tag końcowy elementu. Na przykład:

  • <item num="123"/> (IsEmptyElement is true.)

  • <item num="123"> </item> (IsEmptyElement jest false, mimo że zawartość elementu jest pusta.)

Przykład odczytywanie zawartości tekstowej elementów, zobacz ReadString metody. Poniższy przykład przetwarza elementy przy użyciu while pętli.

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

Atrybuty XML najczęściej znajdują się w przypadku elementów, ale one również dozwolony w deklaracji XML i węzły typu dokumentu.

Ustawiony na węzeł elementu MoveToAttribute Metoda pozwala przejdź przez listę atrybutów elementu. Należy pamiętać, że po MoveToAttribute została wywołana, właściwości węzła takich jak Name, NamespaceURI, i Prefix odzwierciedlają właściwości tego atrybutu, nie właściwości elementu atrybut należy do.

XmlReader Udostępnia te metody i właściwości, aby odczytywać i przetwarzać atrybutów elementów.

Użyj tego XmlReader elementu członkowskiego

Do

HasAttributes Właściwość

Sprawdź, czy bieżący węzeł ma żadnych atrybutów.

AttributeCount Właściwość

Pobierz liczby atrybutów dla bieżącego elementu.

MoveToFirstAttribute Metoda

Przejście do pierwszego atrybutu w elemencie.

MoveToNextAttribute Metoda

Przenieś do następnej atrybutu w elemencie.

MoveToAttribute Metoda

Przenieś do określonego atrybutu.

GetAttribute Metoda lub Item Właściwość

Pobierz wartość określonego atrybutu.

IsDefault Właściwość

Sprawdź, czy bieżący węzeł atrybutu, który został wygenerowany na podstawie wartości domyślnej zdefiniowanej w DTD lub schematu.

MoveToElement Metoda

Przenieś do elementu, który jest właścicielem bieżący atrybut. Ta metoda umożliwia powrót do elementu po przejściu przez jego atrybuty.

ReadAttributeValue Metoda

Analizowanie wartości atrybutu do jednej lub więcej Text, EntityReference, lub EndEntitywęzłów.

Wszelkie ogólne XmlReader metod i właściwości można również Przetwarzaj atrybutów. Na przykład po XmlReader jest umieszczany na atrybucie Name i Value Właściwości odzwierciedlają wartości atrybutu. Można również użyć dowolnej zawartości Read metod, aby uzyskać wartość atrybutu.

W tym przykładzie użyto AttributeCount Właściwość poruszanie się po wszystkich atrybutów w elemencie.

// 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(); 
}

W tym przykładzie użyto MoveToNextAttribute metody w while pętli do nawigowania atrybutów.

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();
}

Odczytywanie atrybutów w węzłach deklaracji XML

Czytnik XML jest ustawiony na węźle deklaracji XML Value właściwość zwraca wersji autonomicznej i kodowania informacji jako pojedynczy ciąg. XmlReader obiekty utworzone przez Create metody XmlTextReader klasy i XmlValidatingReaderklasy udostępnianie wersji autonomicznej i kodowania elementy jako atrybuty.

Odczytywanie atrybutów w węzłach typu dokumentu

Czytnik XML jest ustawiony na węzeł typu dokumentu GetAttribute metody i Item właściwość może służyć do zwracania wartości literałów SYSTEM i publiczne. Na przykład, wywołanie reader.GetAttribute("PUBLIC") zwraca wartość publicznego.

Odczytywanie atrybutów przetwarzania instrukcji węzłów

Gdy XmlReader jest ustawiony na węzeł przetwarzania instrukcji Value właściwość zwraca zawartość całego tekstu. Elementy w węźle instrukcji przetwarzania nie są traktowane jako atrybuty. Nie można odczytać z GetAttribute lub MoveToAttribute metody.

Klasa XMLReader zawiera następujące elementy członkowskie, które odczytu zawartości z pliku XML i zwróć treść jako wartości ciągu. (Aby przywrócić typy CLR, zobacz następnej sekcji.)

Użyj tego XmlReader elementu członkowskiego

Do

Value Właściwość

Pobierz zawartość tekstu dla bieżącego węzła. Wartość zwracana jest zależny od typu węzła; zobacz Value odwołanie do strony szczegółów.

ReadString Metoda

Pobierz zawartość element lub tekst węzła jako ciąg. Ta metoda zatrzymuje przetwarzania instrukcji i komentarze.

Szczegółowe informacje dotyczące jak ta metoda obsługuje typy określonego węzła, zobacz ReadString odwołania do stron.

ReadInnerXml i ReadInnerXmlAsync metody

Pobierz całą zawartość bieżącego węzła, w tym znaczników, ale z wyłączeniem tagu początkowego i końcowego. Na przykład dla:

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

ReadInnerXml Zwraca:

this<child id="123"/>

ReadOuterXml i ReadOuterXmlAsync metody

Pobierz całą zawartość bieżącego węzła i jego elementów podrzędnych, w tym tagi znaczników i rozpoczęcia i zakończenia. Na przykład dla:

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

ReadOuterXml Zwraca:

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

Można użyć członków XmlReader klasy (wymienione w poniższej tabeli) do odczytywania danych XML i wartości zwracane jako języka wspólnego typy środowiska uruchomieniowego (języka wspólnego CLR) zamiast ciągów. Elementy te umożliwiają uzyskać wartości w reprezentacji, która jest najbardziej odpowiednia kodowania zadania bez konieczności ręcznego przeanalizować lub przekonwertować wartości ciągu.

  • ReadElementContentAs metod można wywołać tylko na typy węzłów elementów. Te metody nie można użyć dla elementów, które zawierają elementy podrzędne lub zawartość mieszana. Po wywołaniu XmlReader obiektu odczytuje tagu początkowego odczytuje zawartości elementu i przenosi w przeszłości tag końcowy elementu. Instrukcje przetwarzania i komentarze są ignorowane i jednostek zostaną rozwinięte.

  • ReadContentAsmetody odczytu zawartości tekstowej w bieżącym położeniu czytnika i danych XML nie zawiera żadnych schematu lub typ informacje skojarzone z nią danych przekonwertować tekst na żądany typ zwracany. Tekst, biały znak, znaczące biały znak i CDATA sekcje są łączone. Komentarze i instrukcje przetwarzania są pomijane, a odwołania do jednostki są automatycznie rozwiązany.

XmlReader Klasy przy użyciu reguł zdefiniowanych przez W3C XML Schema Part 2: Datatypeszalecenia.

Użyj tego XmlReader— Metoda

Aby powrócić do tego typu CLR

ReadContentAsBoolean i ReadElementContentAsBoolean

Boolean

ReadContentAsDateTime i ReadElementContentAsDateTime

DateTime

ReadContentAsDouble i ReadElementContentAsDouble

Double

ReadContentAsLong i ReadElementContentAsLong

Int64

ReadContentAsInt i ReadElementContentAsInt

Int32

ReadContentAsString i ReadElementContentAsString

String

ReadContentAs i ReadElementContentAs

Typ określ z returnType parametru

ReadContentAsObject i ReadElementContentAsObject

Najbardziej odpowiedni typ określony przez XmlReader.ValueType Właściwości. Zobacz Obsługa typu w klasach System.Xml informacji mapowania.

Łatwo elementu nie można przekonwertować na typ CLR z powodu jego format, można użyć mapowania schematu, aby upewnić pomyślne konwersji. W poniższym przykładzie użyto pliku XSD przekonwertować hire-date elementu xs:date typu, a następnie używa ReadElementContentAsDateTime metody w celu zwrócenia elementu jako DateTime obiektu.

Dane wejściowe (hireDate.xml):

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

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

Kod:

// 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));
}

Dane wyjściowe:

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

Większość XmlReader metody mają asynchroniczne odpowiedników, które mają "Async" na końcu nazwy metody. Na przykład asynchroniczne odpowiednik ReadContentAsObject jest ReadContentAsObjectAsync.

Za pomocą wywołania metody asynchronicznej można używać następujących metod:

W poniższych sekcjach opisano asynchronicznego użycia metod, które nie mają odpowiedników asynchronicznego.

Metoda ReadStartElement

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");
    }
}

Metoda ReadEndElement

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}

Metoda ReadToNextSibling

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

Metoda ReadToFollowing

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

Metoda ReadToDescendant

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

Należy rozważyć podczas pracy z XmlReader klasy:

  • Wyjątki generowane z XmlReader może ujawnić informacje ścieżki, które mogą nie zostać przepuszcza do aplikacji. Aplikacja musi przechwytywać wyjątków i przetwarzanie ich odpowiednio.

  • Nie włączaj przetwarzanie DTD, jeśli istnieje podejrzenie o odmowa problemów dotyczących usługi lub w przypadku pracy z niezaufanego źródła. Przetwarzanie DTD jest domyślnie wyłączona dla XmlReader obiekty utworzone przez Create metody.

    Jeśli masz włączone przetwarzanie DTD, można użyć XmlSecureResolver do ograniczania zasobów który XmlReader dostęp. Istnieje również możliwość projektowania aplikacji tak, aby przetwarzanie kodu XML jest pamięci i czasu ograniczone. Na przykład można skonfigurować limitów czasu w aplikacji ASP.NET.

  • Dane XML mogą zawierać odwołania do zasobów zewnętrznych, takich jak plik schematu. Domyślnie zasoby zewnętrzne są rozwiązywane przy użyciu XmlUrlResolver obiektu bez poświadczeń użytkownika. Można ją zabezpieczyć, wykonując jedną z następujących czynności:

  • ProcessInlineSchema i ProcessSchemaLocation sprawdzania poprawności flagi XmlReaderSettings obiektu nie są domyślnie. Pomaga to chronić XmlReader przed atakami schematu podczas przetwarzania danych XML z niezaufanego źródła. Gdy te flagi są ustawione, XmlResolver z XmlReaderSettings obiektu służy do rozpoznawania lokalizacji schematu w dokumencie wystąpienia w XmlReader. Jeśli XmlResolver właściwość jest ustawiona na null, lokalizacji schematu nie są rozpoznane nawet wtedy, gdy ProcessInlineSchema i ProcessSchemaLocation są ustawione flagi sprawdzania poprawności.

    Schematy dodawane podczas sprawdzania poprawności Dodaj nowe typy i zmieniać wyniki sprawdzania poprawności dokumentu w trakcie sprawdzania poprawności. W związku z tym schematów zewnętrznych tylko można rozwiązać z zaufanego źródła.

    Zaleca się wyłączenie ProcessIdentityConstraints Flaga podczas sprawdzania poprawności niezaufanych, dużych dokumentów XML w scenariuszach wysokiej dostępności ze schematem, który ma ograniczenia tożsamości w dużej części dokumentu. Ta flaga jest włączona domyślnie.

  • Dane XML mogą zawierać dużej liczby atrybutów, deklaracje przestrzeni nazw, elementów zagnieżdżonych i tak dalej, które wymagają znacznej ilości czasu na przetworzenie. Aby ograniczyć rozmiar danych wejściowych, które są wysyłane do XmlReader, można wykonywać następujące czynności:

    • Limit rozmiaru dokumentu przez ustawienie MaxCharactersInDocument Właściwości.

    • Ogranicz liczbę znaków, które są wynikiem rozwijanie jednostek przez ustawienie MaxCharactersFromEntities Właściwości.

    • Utwórz niestandardową IStream implementacji XmlReader.

  • ReadValueChunk Metoda może służyć do obsługi dużych strumieni danych. Ta metoda umożliwia odczytanie niewielkiej liczby znaków w czasie zamiast przydzielać jeden ciąg do wartości całkowitej.

  • Podczas odczytu dokumentu XML z dużą liczbą unikatowe nazwy lokalne, przestrzenie nazw i prefiksy, może wystąpić problem. Jeśli używasz klasę pochodną XmlReader, i wywołania LocalName, Prefix, lub NamespaceURI Właściwości dla każdego elementu, zwracanego ciągu jest dodawany do NameTable. Kolekcja posiadaniu NameTable nigdy nie zmniejsza rozmiar tworzenie przeciek pamięci wirtualnej dojść ciągu. Jeden ograniczenie dla tej ma pochodzić od NameTable klasy a wymuszania przydziału maksymalny rozmiar. (Nie ma żadnego sposobu, aby uniemożliwić korzystanie z NameTable, lub aby przełączyć NameTable gdy jest pełny). Zapobieganie innego jest unikać właściwości wymienionych i zamiast tego użyć MoveToAttribute metody z IsStartElement Metoda w miarę możliwości; te metody nie zwracać ciągi i w związku z tym uniknąć problemu przepełnienie NameTable kolekcji.

  • XmlReaderSettings obiekty mogą zawierać poufne informacje, takie jak poświadczenia użytkownika. Niezaufany składnik może użyć XmlReaderSettings obiekt i jego poświadczenia użytkownika, aby utworzyć XmlReader obiektów do odczytywania danych. Należy zachować ostrożność podczas buforowania XmlReaderSettings obiektów, lub gdy przekazywanie XmlReaderSettings obiekt z jednego składnika.

  • Nie akceptuj składniki pomocnicze, takie jak NameTable, XmlNamespaceManager, i XmlResolver obiektów z niezaufanego źródła.

Poniższy przykład kodu pokazuje sposób użycia asynchronicznego analizy APIto XML.

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

Platforma uniwersalna systemu Windows
Dostępne od 8
.NET Framework
Dostępne od 1.1
Biblioteka klas przenośnych
Obsługiwane w: przenośne platformy .NET
Silverlight
Dostępne od 2.0
Windows Phone Silverlight
Dostępne od 7.0
Windows Phone
Dostępne od 8.1

Wszystkie publiczne statyczne ( Shared w języku Visual Basic) elementy członkowskie tego typu są wątkowo bezpieczne. Dla żadnych elementów członkowskich wystąpień nie ma gwarancji bezpieczeństwa wątkowego.

Powrót do początku
Pokaż: