XmlReader Klasa

Definicja

Reprezentuje czytnik zapewniający szybkie i niebuforowane dostęp do danych XML.Represents a reader that provides fast, noncached, forward-only access to XML data.

public ref class XmlReader abstract : IDisposable
public abstract class XmlReader : IDisposable
type XmlReader = class
    interface IDisposable
Public MustInherit Class XmlReader
Implements IDisposable
Dziedziczenie
XmlReader
Pochodne
Implementuje

Przykłady

Poniższy przykładowy kod pokazuje, jak używać asynchronicznego interfejsu API do analizowania kodu XML.The following example code shows how to use the asynchronous API to parse 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;
            }
        }
    }
}
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

Uwagi

XmlReaderzapewnia dostęp tylko do odczytu do danych XML w dokumencie lub strumieniu.XmlReader provides forward-only, read-only access to XML data in a document or stream. Ta klasa jest zgodna z zaleceń XML W3C (XML) 1,0 (czwarta wersja) i przestrzenie nazw w XML 1,0 (wydanie trzecie) .This class conforms to the W3C Extensible Markup Language (XML) 1.0 (fourth edition) and the Namespaces in XML 1.0 (third edition) recommendations.

XmlReadermetody umożliwiają przechodzenie przez dane XML i odczytywanie zawartości węzła.XmlReader methods let you move through XML data and read the contents of a node. Właściwości klasy odzwierciedlają wartość bieżącego węzła, w którym znajduje się czytnik. Wartość ReadState właściwości wskazuje bieżący stan obiektu odczytującego XML.The properties of the class reflect the value of the current node, which is where the reader is positioned.The ReadState property value indicates the current state of the XML reader. Na przykład właściwość jest ustawiana ReadState.Initial XmlReader.Read przez metodę i ReadState.Closed przez XmlReader.Close metodę.For example, the property is set to ReadState.Initial by the XmlReader.Read method and ReadState.Closed by the XmlReader.Close method. XmlReaderzapewnia także sprawdzanie zgodności danych i sprawdzanie poprawności względem DTD lub schematu.XmlReader also provides data conformance checks and validation against a DTD or schema.

XmlReaderPobiera dane przy użyciu modelu ściągania.XmlReader uses a pull model to retrieve data. Ten model:This model:

  • Upraszcza zarządzanie stanem przez naturalne, górne udoskonalenia proceduralne.Simplifies state management by a natural, top-down procedural refinement.

  • Obsługuje wiele strumieni danych wejściowych i warstw.Supports multiple input streams and layering.

  • Umożliwia klientowi wydawanie analizatora bufora, do którego jest on bezpośrednio pisany, i w ten sposób pozwala uniknąć konieczności dodatkowej kopii ciągu.Enables the client to give the parser a buffer into which the string is directly written, and thus avoids the necessity of an extra string copy.

  • Obsługuje przetwarzanie selektywne.Supports selective processing. Klient może pominąć elementy i przetwarzać te, które są istotne dla aplikacji.The client can skip items and process those that are of interest to the application. Możesz również ustawić właściwości z góry, aby zarządzać sposobem przetwarzania strumienia XML (na przykład normalizacji).You can also set properties in advance to manage how the XML stream is processed (for example, normalization).

W tej sekcji:In this section:

Tworzenie czytnika XML Creating an XML reader
Walidacja danych XML Validating XML data
Zgodność danych Data conformance
Nawigowanie po węzłach Navigating through nodes
Odczytywanie elementów XML Reading XML elements
Odczytywanie atrybutów XML Reading XML attributes
Odczytywanie zawartości XML Reading XML content
Konwertowanie na typy CLR Converting to CLR types
Programowanie asynchroniczne Asynchronous programming
Zagadnienia dotyczące bezpieczeństwaSecurity considerations

Tworzenie czytnika XMLCreating an XML reader

Użyj metody Create , aby XmlReader utworzyć wystąpienie.Use the Create method to create an XmlReader instance.

Chociaż XmlReader .NET Framework dostarcza konkretnych implementacji klasy, takich XmlTextReaderjak, XmlNodeReader, i XmlValidatingReader klas, zalecamy użycie wyspecjalizowanych klas tylko w tych scenariuszach:Although the .NET Framework provides concrete implementations of the XmlReader class, such as the XmlTextReader, XmlNodeReader, and the XmlValidatingReader classes, we recommend that you use the specialized classes only in these scenarios:

  • Jeśli chcesz odczytać poddrzewo XML dom z XmlNode obiektu, XmlNodeReader Użyj klasy.When you want to read an XML DOM subtree from an XmlNode object, use the XmlNodeReader class. (Jednak ta klasa nie obsługuje walidacji DTD lub schematu).(However, this class doesn't support DTD or schema validation.)

  • Jeśli musisz rozwinąć jednostki na żądanie, nie chcesz znormalizować zawartości tekstu lub nie chcesz, aby atrybuty domyślne zostały zwrócone, użyj XmlTextReader klasy.If you must expand entities on request, you don't want your text content normalized, or you don't want default attributes returned, use the XmlTextReader class.

Aby określić zestaw funkcji, które mają być włączone w czytniku XML, Przekaż System.Xml.XmlReaderSettings obiekt Create do metody.To specify the set of features you want to enable on the XML reader, pass an System.Xml.XmlReaderSettings object to the Create method. Można użyć pojedynczego System.Xml.XmlReaderSettings obiektu do utworzenia wielu czytników o tej samej funkcjonalności lub System.Xml.XmlReaderSettings zmodyfikować obiekt, aby utworzyć nowy czytelnik z innym zestawem funkcji.You can use a single System.Xml.XmlReaderSettings object to create multiple readers with the same functionality, or modify the System.Xml.XmlReaderSettings object to create a new reader with a different set of features. Możesz również łatwo dodawać funkcje do istniejącego czytnika.You can also easily add features to an existing reader.

Jeśli nie używasz System.Xml.XmlReaderSettings obiektu, zostaną użyte ustawienia domyślne.If you don't use a System.Xml.XmlReaderSettings object, default settings are used. Aby uzyskać Create szczegółowe informacje, zobacz stronę referencyjną.See the Create reference page for details.

XmlReaderzgłasza błędy analizy w kodzie XML. XmlExceptionXmlReader throws an XmlException on XML parse errors. Po zgłoszeniu wyjątku stan czytnika nie jest przewidywalny.After an exception is thrown, the state of the reader is not predictable. Na przykład raportowany typ węzła może różnić się od rzeczywistego typu węzła bieżącego węzła.For example, the reported node type may be different from the actual node type of the current node. Użyj właściwości ReadState , aby sprawdzić, czy czytnik jest w stanie błędu.Use the ReadState property to check whether the reader is in error state.

Walidacja danych XMLValidating XML data

Aby zdefiniować strukturę dokumentu XML i jego relacje między elementami, typy danych i ograniczenia zawartości, należy użyć definicji typu dokumentu (DTD) lub schematu języka definicji schematu XML (XSD).To define the structure of an XML document and its element relationships, data types, and content constraints, you use a document type definition (DTD) or XML Schema definition language (XSD) schema. Dokument XML jest uznawany za poprawnie sformułowany, jeśli spełnia wszystkie wymagania składniowe zdefiniowane przez konsorcjum W3C XML 1,0.An XML document is considered to be well formed if it meets all the syntactical requirements defined by the W3C XML 1.0 Recommendation. Jest uznawany za prawidłowy, jeśli jest prawidłowo sformułowany, a także spełnia ograniczenia zdefiniowane przez jego DTD lub schemat.It's considered valid if it's well formed and also conforms to the constraints defined by its DTD or schema. (Patrz plik W3C XML schematu część 1: Strukturyi plik W3C XML schematu część 2: Zalecenia dotyczące typów danych). W związku z tym, mimo że wszystkie prawidłowe dokumenty XML są poprawnie sformułowane, nie wszystkie poprawnie sformułowane dokumenty XML są prawidłowe.(See the W3C XML Schema Part 1: Structures and the W3C XML Schema Part 2: Datatypes recommendations.) Therefore, although all valid XML documents are well formed, not all well-formed XML documents are valid.

Można sprawdzić poprawność danych względem DTD, wbudowanego schematu XSD lub schematu XSD przechowywanego w XmlSchemaSet obiekcie (pamięć podręczna). Te scenariusze są opisane Create na stronie odniesienia.You can validate the data against a DTD, an inline XSD Schema, or an XSD Schema stored in an XmlSchemaSet object (a cache); these scenarios are described on the Create reference page. XmlReadernie obsługuje walidacji schematu danych XML (XDR).XmlReader doesn't support XML-Data Reduced (XDR) schema validation.

Aby określić typ walidacji, jeśli XmlReaderSettings istnieje XmlReader , można użyć następujących ustawień.You use the following settings on the XmlReaderSettings class to specify what type of validation, if any, the XmlReader instance supports.

Użyj tego XmlReaderSettings elementu członkowskiegoUse this XmlReaderSettings member Aby określićTo specify
DtdProcessingwartośćDtdProcessing property Czy zezwalać na przetwarzanie DTD.Whether to allow DTD processing. Wartość domyślna to nie Zezwalaj na przetwarzanie DTD.The default is to disallow DTD processing.
ValidationTypewartośćValidationType property Czy czytnik ma sprawdzać poprawność danych oraz jaki typ walidacji ma być wykonywany (DTD lub schemat).Whether the reader should validate data, and what type of validation to perform (DTD or schema). Wartość domyślna nie jest walidacją danych.The default is no data validation.
ValidationEventHandlerwydarzenValidationEventHandler event Procedura obsługi zdarzeń do uzyskiwania informacji o zdarzeniach walidacji.An event handler for receiving information about validation events. Jeśli nie podano programu obsługi zdarzeń, XmlException zostanie zgłoszony podczas pierwszego błędu walidacji.If an event handler is not provided, an XmlException is thrown on the first validation error.
ValidationFlagswartośćValidationFlags property Dodatkowe opcje weryfikacji za pomocą XmlSchemaValidationFlags elementów członkowskich wyliczenia:Additional validation options through the XmlSchemaValidationFlags enumeration members:

- AllowXmlAttributes--Zezwalaj na atrybuty XMLxml:*() w dokumentach wystąpienia, nawet jeśli nie są zdefiniowane w schemacie.- AllowXmlAttributes-- Allow XML attributes (xml:*) in instance documents even when they're not defined in the schema. Atrybuty są sprawdzane na podstawie ich typu danych.The attributes are validated based on their data type. Zapoznaj się ze stroną referencyjnąustawienia,któremabyćużywanewokreślonychscenariuszach.XmlSchemaValidationFlagsSee the XmlSchemaValidationFlags reference page for the setting to use in specific scenarios. (Domyślnie wyłączone).(Disabled by default.)
- ProcessIdentityConstraints--Przetwarzaj ograniczenia tożsamościxs:ID( xs:IDREF, xs:key, xs:keyref xs:unique,,) podczas walidacji.- ProcessIdentityConstraints --Process identity constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) encountered during validation. (Domyślnie włączone).(Enabled by default.)
- ProcessSchemaLocation--Przetwarzaj schematy określone przez xsi:schemaLocation atrybut xsi:noNamespaceSchemaLocation lub.- ProcessSchemaLocation --Process schemas specified by the xsi:schemaLocation or xsi:noNamespaceSchemaLocation attribute. (Domyślnie włączone).(Enabled by default.)
- ProcessInlineSchema--Przetwarzaj wbudowane schematy XML podczas walidacji.- ProcessInlineSchema-- Process inline XML Schemas during validation. (Domyślnie wyłączone).(Disabled by default.)
- ReportValidationWarnings--Zgłoś zdarzenia, jeśli wystąpi ostrzeżenie o walidacji.- ReportValidationWarnings--Report events if a validation warning occurs. Ostrzeżenie jest zazwyczaj emitowane, gdy nie istnieje schemat DTD lub XML do walidacji określonego elementu lub atrybutu.A warning is typically issued when there is no DTD or XML Schema to validate a particular element or attribute against. ValidationEventHandler Służy do powiadamiania.The ValidationEventHandler is used for notification. (Domyślnie wyłączone).(Disabled by default.)
Schemas XmlSchemaSet Do użycia na potrzeby walidacji.The XmlSchemaSet to use for validation.
XmlResolverwartośćXmlResolver property XmlResolver Do rozpoznawania i uzyskiwania dostępu do zasobów zewnętrznych.The XmlResolver for resolving and accessing external resources. Może to dotyczyć zewnętrznych obiektów, takich jak DTD i schematy, xs:include oraz xs:import elementów zawartych w schemacie XML.This can include external entities such as DTD and schemas, and any xs:include or xs:import elements contained in the XML Schema. Jeśli nie określisz XmlResolver XmlReader , program używa domyślnego ustawienia XmlUrlResolver bez poświadczeń użytkownika.If you don't specify an XmlResolver, the XmlReader uses a default XmlUrlResolver with no user credentials.

Zgodność danychData conformance

Czytelnicy XML, które są tworzone przez Create metodę, domyślnie spełniają następujące wymagania dotyczące zgodności:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Nowe wiersze i wartości atrybutów są znormalizowane zgodnie z zaleceniem W3C XML 1,0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Wszystkie jednostki są automatycznie rozszerzane.All entities are automatically expanded.

  • Atrybuty domyślne zadeklarowane w definicji typu dokumentu są zawsze dodawane nawet wtedy, gdy czytnik nie sprawdza poprawności.Default attributes declared in the document type definition are always added even when the reader doesn't validate.

  • Deklaracja prefiksu XML zamapowanego na prawidłowy identyfikator URI przestrzeni nazw XML jest dozwolona.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • Nazwy notacji w NotationType jednoatrybutowej deklaracji i NmTokens w deklaracji jednego Enumeration atrybutu są różne.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

Użyj tych XmlReaderSettings właściwości, aby określić typ kontroli zgodności, które chcesz włączyć:Use these XmlReaderSettings properties to specify the type of conformance checks you want to enable:

Użyj tej XmlReaderSettings właściwościUse this XmlReaderSettings property ZadanieTo DomyślnyDefault
CheckCharacterswartośćCheckCharacters property Włącz lub Wyłącz kontrole dla następujących:Enable or disable checks for the following:

-Znaki mieszczą się w zakresie dozwolonych znaków XML, jak zdefiniowano w sekcji 2,2 znaków zalecenia W3C XML 1,0.- Characters are within the range of legal XML characters, as defined by the 2.2 Characters section of the W3C XML 1.0 Recommendation.
-Wszystkie nazwy XML są prawidłowe, zgodnie z definicją w sekcji typowe konstrukcje składni 2,3 zalecenia dotyczącego W3C XML 1,0.- All XML names are valid, as defined by the 2.3 Common Syntactic Constructs section of the W3C XML 1.0 Recommendation.

Gdy ta właściwość jest ustawiona na true (wartość domyślna) XmlException , wyjątek jest zgłaszany, jeśli plik XML zawiera niedozwolone znaki lub nieprawidłowe nazwy XML (na przykład nazwa elementu zaczyna się od liczby).When this property is set to true (default), an XmlException exception is thrown if the XML file contains illegal characters or invalid XML names (for example, an element name starts with a number).
Sprawdzanie znaku i nazwy jest włączone.Character and name checking is enabled.

Ustawienie CheckCharacters umożliwiającefalse wyłączenie sprawdzania znaków dla odwołań do jednostek znaków.Setting CheckCharacters to false turns off character checking for character entity references. Jeśli czytnik przetwarza dane tekstowe, zawsze sprawdza, czy nazwy XML są prawidłowe, niezależnie od tego ustawienia.If the reader is processing text data, it always checks that XML names are valid, regardless of this setting. Uwaga: Zalecenie XML 1,0 wymaga zgodności na poziomie dokumentu, gdy jest obecny element DTD.Note: The XML 1.0 recommendation requires document-level conformance when a DTD is present. W związku z tym, jeśli czytnik jest skonfigurowany ConformanceLevel.Fragmentdo obsługi, ale dane XML zawierają definicję typu dokumentu (DTD) XmlException , jest zgłaszany.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.
ConformanceLevelwartośćConformanceLevel property Wybierz poziom zgodności, który ma zostać wymuszony:Choose the level of conformance to enforce:

- Document.- Document. Zgodne z regułami dla poprawnie sformułowanego dokumentu XML 1,0.Conforms to the rules for a well-formed XML 1.0 document.
- Fragment.- Fragment. Zgodne z regułami dla poprawnie sformułowanego fragmentu dokumentu, który może być używany jako zewnętrzna jednostka analizowana.Conforms to the rules for a well-formed document fragment that can be consumed as an external parsed entity.
- Auto.- Auto. Jest zgodne z poziomem przyznaczonym przez czytelnika.Conforms to the level decided by the reader.

Jeśli dane nie są zgodne, XmlException zgłaszany jest wyjątek.If the data isn't in conformance, an XmlException exception is thrown.
Document

Bieżący węzeł jest węzłem XML, w którym jest obecnie umieszczony czytnik XML.The current node is the XML node on which the XML reader is currently positioned. Wszystkie XmlReader metody wykonują operacje w odniesieniu do tego węzła XmlReader , a wszystkie właściwości odzwierciedlają wartość bieżącego węzła.All XmlReader methods perform operations in relation to this node, and all XmlReader properties reflect the value of the current node.

Poniższe metody ułatwiają nawigowanie po węzłach i analizowanie danych.The following methods make it easy to navigate through nodes and parse data.

Użyj tej XmlReaderSettings metodyUse this XmlReaderSettings method ZadanieTo
Read Zapoznaj się z pierwszym węzłem i przejdź do następnego węzła.Read the first node, and advance through the stream one node at a time. Takie wywołania są zwykle wykonywane wewnątrz while pętli.Such calls are typically performed inside a while loop.

NodeType Użyj właściwości, aby uzyskać typ (na przykład atrybut, komentarz, element itd.) bieżącego węzła.Use the NodeType property to get the type (for example, attribute, comment, element, and so on) of the current node.
Skip Pomiń elementy podrzędne bieżącego węzła i przejdź do następnego węzła.Skip the children of the current node and move to the next node.
MoveToContent i MoveToContentAsyncMoveToContent and MoveToContentAsync Pomiń węzły niebędące zawartością i przejdź do następnego węzła zawartości lub na koniec pliku.Skip non-content nodes and move to the next content node or to the end of the file.

Węzły niebędące zawartością ProcessingInstructionobejmują DocumentType Comment,, Whitespace, i SignificantWhitespace.Non-content nodes include ProcessingInstruction, DocumentType, Comment, Whitespace, and SignificantWhitespace.

Węzły zawartości zawierają niebiały tekst spacji, CDATA EntityReference , i EndEntity.Content nodes include non-white space text, CDATA, EntityReference , and EndEntity.
ReadSubtree Odczytaj element i jego wszystkie elementy podrzędne i zwróć nowe XmlReader wystąpienie o ReadState.Initialwartości.Read an element and all its children, and return a new XmlReader instance set to ReadState.Initial.

Ta metoda jest przydatna do tworzenia granic wokół elementów XML; na przykład jeśli chcesz przekazać dane do innego składnika do przetwarzania i chcesz ograniczyć ilość danych, do których składnik może uzyskać dostęp.This method is useful for creating boundaries around XML elements; for example, if you want to pass data to another component for processing and you want to limit how much of your data the component can access.

Na stronie XmlReader.Read dokumentacja można zobaczyć przykład przechodzenia przez strumień tekstowy po jednym węźle i wyświetlanie typu każdego węzła.See the XmlReader.Read reference page for an example of navigating through a text stream one node at a time and displaying the type of each node.

W poniższych sekcjach opisano sposób odczytywania określonych typów danych, takich jak elementy, atrybuty i dane wpisywane.The following sections describe how you can read specific types of data, such as elements, attributes, and typed data.

Odczytywanie elementów XMLReading XML elements

Poniższa tabela zawiera listę metod i właściwości, które XmlReader Klasa zapewnia do przetwarzania elementów.The following table lists the methods and properties that the XmlReader class provides for processing elements. Po ustawieniu elementu w elemencie właściwości węzła, takie jak Name, odzwierciedlają wartości elementów. XmlReaderAfter the XmlReader is positioned on an element, the node properties, such as Name, reflect the element values. Oprócz elementów członkowskich opisanych poniżej wszystkie ogólne metody i właściwości XmlReader klasy mogą być również używane do przetwarzania elementów.In addition to the members described below, any of the general methods and properties of the XmlReader class can also be used to process elements. Na przykład można użyć ReadInnerXml metody do odczytu zawartości elementu.For example, you can use the ReadInnerXml method to read the contents of an element.

Uwaga

Zapoznaj się z sekcją 3,1 zalecenia dotyczącego W3C XML 1,0 dla definicji tagów początkowych, tagów końcowych i pustych tagów elementów.See section 3.1 of the W3C XML 1.0 Recommendation for definitions of start tags, end tags, and empty element tags.

Użyj tego XmlReader elementu członkowskiegoUse this XmlReader member ZadanieTo
IsStartElementMethodIsStartElement method Sprawdź, czy bieżący węzeł jest tagiem początkowym lub pustym tagiem elementu.Check if the current node is a start tag or an empty element tag.
ReadStartElementMethodReadStartElement method Sprawdź, czy bieżący węzeł jest elementem i przejdź do następnego węzła (wywołania IsStartElement , Readpo którym następuje).Check that the current node is an element and advance the reader to the next node (calls IsStartElement followed by Read).
ReadEndElementMethodReadEndElement method Sprawdź, czy bieżący węzeł jest tagiem końcowym i zapoznaj się z nim, aby przejść do następnego węzła.Check that the current node is an end tag and advance the reader to the next node.
ReadElementStringMethodReadElementString method Odczytaj element tekstowy.Read a text-only element.
ReadToDescendantMethodReadToDescendant method Przejdź do następnego elementu podrzędnego (podrzędnego), który ma określoną nazwę.Advance the XML reader to the next descendant (child) element that has the specified name.
ReadToNextSiblingMethodReadToNextSibling method Przejdź do następnego elementu równorzędnego z określoną nazwą czytnika XML.Advance the XML reader to the next sibling element that has the specified name.
IsEmptyElementwartośćIsEmptyElement property Sprawdź, czy bieżący element ma tag elementu końcowego.Check if the current element has an end element tag. Na przykład:For example:

- <item num="123"/>(IsEmptyElement istrue.)- <item num="123"/> (IsEmptyElement is true.)
- <item num="123"> </item>(IsEmptyElement isfalse, chociaż zawartość elementu jest pusta).- <item num="123"> </item> (IsEmptyElement is false, although the element's content is empty.)

Przykład odczytywania zawartości tekstowej elementów można znaleźć w ReadString metodzie.For an example of reading the text content of elements, see the ReadString method. Poniższy przykład przetwarza elementy przy użyciu while pętli.The following example processes elements by using a while loop.

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

Odczytywanie atrybutów XMLReading XML attributes

Atrybuty XML najczęściej znajdują się na elementach, ale są one również dozwolone dla deklaracji XML i węzłów typu dokumentu.XML attributes are most commonly found on elements, but they're also allowed on XML declaration and document type nodes.

W przypadku położenia w węźle MoveToAttribute elementu Metoda umożliwia przechodzenie przez listę atrybutów elementu.When positioned on an element node, the MoveToAttribute method lets you go through the attribute list of the element. Należy zauważyć, MoveToAttribute że po wywołaniu właściwości węzła, takie jak Name, NamespaceURIi odzwierciedlają właściwości tego atrybutu, a Prefix nie właściwości elementu, do którego należy atrybut.Note that after MoveToAttribute has been called, node properties such as Name, NamespaceURI, and Prefix reflect the properties of that attribute, not the properties of the element the attribute belongs to.

XmlReader Klasa zawiera te metody i właściwości do odczytu i przetwarzania atrybutów dla elementów.The XmlReader class provides these methods and properties to read and process attributes on elements.

Użyj tego XmlReader elementu członkowskiegoUse this XmlReader member ZadanieTo
HasAttributeswartośćHasAttributes property Sprawdź, czy bieżący węzeł ma jakiekolwiek atrybuty.Check whether the current node has any attributes.
AttributeCountwartośćAttributeCount property Pobierz liczbę atrybutów dla bieżącego elementu.Get the number of attributes on the current element.
MoveToFirstAttributeMethodMoveToFirstAttribute method Przejdź do pierwszego atrybutu w elemencie.Move to the first attribute in an element.
MoveToNextAttributeMethodMoveToNextAttribute method Przejdź do następnego atrybutu w elemencie.Move to the next attribute in an element.
MoveToAttributeMethodMoveToAttribute method Przenieś do określonego atrybutu.Move to a specified attribute.
GetAttributeMetoda lub Item[String, String] WłaściwośćGetAttribute method or Item[String, String] property Pobierz wartość określonego atrybutu.Get the value of a specified attribute.
IsDefaultwartośćIsDefault property Sprawdź, czy bieżący węzeł jest atrybutem, który został wygenerowany na podstawie wartości domyślnej zdefiniowanej w DTD lub schemacie.Check whether the current node is an attribute that was generated from the default value defined in the DTD or schema.
MoveToElementMethodMoveToElement method Przejdź do elementu, który jest właścicielem bieżącego atrybutu.Move to the element that owns the current attribute. Użyj tej metody, aby powrócić do elementu po przejściu przez jego atrybuty.Use this method to return to an element after navigating through its attributes.
ReadAttributeValueMethodReadAttributeValue method Przeanalizuj wartość atrybutu w jeden lub więcej Textwęzłów EntityReference, lub EndEntity .Parse the attribute value into one or more Text, EntityReference, or EndEntity nodes.

Wszystkie ogólne XmlReader metody i właściwości mogą być również używane do przetwarzania atrybutów.Any of the general XmlReader methods and properties can also be used to process attributes. Na przykład po XmlReader ustawieniu elementu w atrybucie Name właściwości i Value odzwierciedlają wartości atrybutu.For example, after the XmlReader is positioned on an attribute, the Name and Value properties reflect the values of the attribute. Można również użyć dowolnej z metod zawartości Read , aby uzyskać wartość atrybutu.You can also use any of the content Read methods to get the value of the attribute.

Ten przykład używa właściwości AttributeCount , aby nawigować przez wszystkie atrybuty elementu.This example uses the AttributeCount property to navigate through all the attributes on an element.

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

W tym przykładzie zastosowano MoveToNextAttribute metodę w pętli,abynawigowaćprzezatrybuty.whileThis example uses the MoveToNextAttribute method in a while loop to navigate through the attributes.

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

Odczytywanie atrybutów w węzłach deklaracji XMLReading attributes on XML declaration nodes

Gdy czytnik XML jest umieszczony w węźle deklaracji XML, Value Właściwość zwraca informacje o wersji, autonomicznej i kodowaniu jako pojedynczy ciąg.When the XML reader is positioned on an XML declaration node, the Value property returns the version, standalone, and encoding information as a single string. XmlReaderobiekty utworzone przez Create metodę XmlTextReader , klasę i XmlValidatingReader klasy uwidaczniają wersje, autonomiczne i kodowane elementy jako atrybuty.XmlReader objects created by the Create method, the XmlTextReader class, and the XmlValidatingReader class expose the version, standalone, and encoding items as attributes.

Odczytywanie atrybutów w węzłach typu dokumentuReading attributes on document type nodes

Gdy czytelnik XML jest umieszczony w węźle typu dokumentu, GetAttribute Metoda i Item[String, String] właściwość mogą zwrócić wartości dla systemu i literałów publicznych.When the XML reader is positioned on a document type node, the GetAttribute method and Item[String, String] property can be used to return the values for the SYSTEM and PUBLIC literals. Na przykład wywoływanie reader.GetAttribute("PUBLIC") zwraca wartość publiczną.For example, calling reader.GetAttribute("PUBLIC") returns the PUBLIC value.

Odczytywanie atrybutów w węzłach instrukcji przetwarzaniaReading attributes on processing instruction nodes

Gdy jest ustawiony w węźle instrukcji przetwarzania Value , właściwość zwraca całą zawartość tekstową. XmlReaderWhen the XmlReader is positioned on a processing instruction node, the Value property returns the entire text content. Elementy w węźle instrukcji przetwarzania nie są traktowane jako atrybuty.Items in the processing instruction node aren't treated as attributes. Nie można ich odczytać przy użyciu GetAttribute metody MoveToAttribute lub.They can't be read with the GetAttribute or MoveToAttribute method.

Odczytywanie zawartości XMLReading XML content

Klasa XMLReader zawiera następujące składowe, które odczytują zawartość z pliku XML i zwracają zawartość jako wartości ciągu.The XMLReader class includes the following members that read content from an XML file and return the content as string values. (Aby zwrócić typy CLR, zobacz następną sekcję).(To return CLR types, see the next section.)

Użyj tego XmlReader elementu członkowskiegoUse this XmlReader member ZadanieTo
ValuewartośćValue property Pobierz zawartość tekstową bieżącego węzła.Get the text content of the current node. Zwracana wartość zależy od typu węzła; Aby uzyskać Value szczegółowe informacje, zobacz stronę referencyjną.The value returned depends on the node type; see the Value reference page for details.
ReadStringMethodReadString method Pobierz zawartość elementu lub węzła tekstowego jako ciąg.Get the content of an element or text node as a string. Ta metoda przerywa przetwarzanie instrukcji i komentarzy.This method stops on processing instructions and comments.

Aby uzyskać szczegółowe informacje na temat sposobu obsługi określonych typów węzłów przez tę ReadString metodę, zobacz stronę referencyjną.For details on how this method handles specific node types, see the ReadString reference page.
ReadInnerXmli ReadInnerXmlAsync metodyReadInnerXml and ReadInnerXmlAsync methods Pobierz całą zawartość bieżącego węzła, włącznie z adiustacją, ale z wyłączeniem tagów początkowych i końcowych.Get all the content of the current node, including the markup, but excluding start and end tags. Na przykład dla:For example, for:

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

ReadInnerXmltypuReadInnerXml returns:

this<child id="123"/>
ReadOuterXmli ReadOuterXmlAsync metodyReadOuterXml and ReadOuterXmlAsync methods Pobierz całą zawartość bieżącego węzła i jego elementy podrzędne, w tym znaczniki znacznika i początku/końca.Get all the content of the current node and its children, including markup and start/end tags. Na przykład dla:For example, for:

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

ReadOuterXmltypuReadOuterXml returns:

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

Konwertowanie na typy CLRConverting to CLR types

Za pomocą elementów członkowskich XmlReader klasy (wymienionych w poniższej tabeli) można odczytać dane XML i zwrócić wartości jako typy środowiska uruchomieniowego języka wspólnego (CLR), a nie ciągi.You can use the members of the XmlReader class (listed in the following table) to read XML data and return values as common language runtime (CLR) types instead of strings. Te elementy członkowskie umożliwiają uzyskanie wartości w reprezentacji, która jest najbardziej odpowiednia dla zadania kodowania, bez konieczności ręcznego analizowania lub konwertowania wartości ciągu.These members enable you to get values in the representation that is most appropriate for your coding task without having to manually parse or convert string values.

  • Metody ReadElementContentAs można wywoływać tylko w typach węzłów elementów.The ReadElementContentAs methods can only be called on element node types. Tych metod nie można używać dla elementów, które zawierają elementy podrzędne lub zawartość mieszaną.These methods cannot be used on elements that contain child elements or mixed content. Gdy wywoływana, XmlReader obiekt odczytuje tag początkowy, odczytuje zawartość elementu, a następnie przenosi poza tag elementu końcowego.When called, the XmlReader object reads the start tag, reads the element content, and then moves past the end element tag. Instrukcje przetwarzania i komentarze są ignorowane, a jednostki są rozwinięte.Processing instructions and comments are ignored and entities are expanded.

  • Metody ReadContentAs odczytują zawartość tekstową w bieżącym położeniu czytelnika, a jeśli dane XML nie mają skojarzonych ze schematem lub informacjami o typie danych, przekonwertuj zawartość tekstową na żądany typ zwracany.The ReadContentAs methods read the text content at the current reader position, and if the XML data doesn't have any schema or data type information associated with it, convert the text content to the requested return type. Tekst, biały znak, znaczące białe miejsce i sekcje CDATA są łączone.Text, white space, significant white space and CDATA sections are concatenated. Komentarze i instrukcje przetwarzania są pomijane, a odwołania do jednostek są automatycznie rozwiązywane.Comments and processing instructions are skipped, and entity references are automatically resolved.

Klasa używa reguł zdefiniowanych przez plik W3C XML schematu część 2: XmlReader Zalecenie dotyczące typów danych.The XmlReader class uses the rules defined by the W3C XML Schema Part 2: Datatypes recommendation.

Użyj tej XmlReader metodyUse this XmlReader method Aby zwrócić ten typ CLRTo return this CLR type
ReadContentAsBoolean i ReadElementContentAsBooleanReadContentAsBoolean and ReadElementContentAsBoolean Boolean
ReadContentAsDateTime i ReadElementContentAsDateTimeReadContentAsDateTime and ReadElementContentAsDateTime DateTime
ReadContentAsDouble i ReadElementContentAsDoubleReadContentAsDouble and ReadElementContentAsDouble Double
ReadContentAsLong i ReadElementContentAsLongReadContentAsLong and ReadElementContentAsLong Int64
ReadContentAsInt i ReadElementContentAsIntReadContentAsInt and ReadElementContentAsInt Int32
ReadContentAsString i ReadElementContentAsStringReadContentAsString and ReadElementContentAsString String
ReadContentAs i ReadElementContentAsReadContentAs and ReadElementContentAs Typ określony przy użyciu returnType parametruThe type you specify with the returnType parameter
ReadContentAsObject i ReadElementContentAsObjectReadContentAsObject and ReadElementContentAsObject Najbardziej odpowiedni typ określony przez XmlReader.ValueType właściwość.The most appropriate type, as specified by the XmlReader.ValueType property. Aby uzyskać informacje dotyczące mapowania , zobacz Obsługa typów w klasach system. XML .See Type Support in the System.Xml Classes for mapping information.

Jeśli elementu nie można łatwo przekonwertować na typ CLR ze względu na jego format, można użyć mapowania schematu, aby upewnić się, że konwersja została zakończona pomyślnie.If an element can't easily be converted to a CLR type because of its format, you can use a schema mapping to ensure a successful conversion. Poniższy przykład używa pliku hire-date XSD do przekonwertowania elementu xs:date na typ ReadElementContentAsDateTime , a następnie używa metody do zwrócenia elementu jako DateTime obiektu.The following example uses an .xsd file to convert the hire-date element to the xs:date type, and then uses the ReadElementContentAsDateTime method to return the element as a DateTime object.

Dane wejściowe (hireDate. xml):Input (hireDate.xml):

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

Schemat (hireDate. xsd):Schema (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>

KoduCode:

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

Dane wyjściowe:Output:

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

Programowanie asynchroniczneAsynchronous programming

XmlReader Większość metod ma asynchroniczne odpowiedniki, które mają wartość "Async" na końcu nazw metod.Most of the XmlReader methods have asynchronous counterparts that have "Async" at the end of their method names. Na przykład asynchroniczny odpowiednik ReadContentAsObject to. ReadContentAsObjectAsyncFor example, the asynchronous equivalent of ReadContentAsObject is ReadContentAsObjectAsync.

Za pomocą wywołań metod asynchronicznych można używać następujących metod:The following methods can be used with asynchronous method calls:

W poniższych sekcjach opisano asynchroniczne użycie metod, które nie mają odpowiedników asynchronicznych.The following sections describe asynchronous usage for methods that don't have asynchronous counterparts.

ReadStartElement, MetodaReadStartElement method

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, MetodaReadEndElement method

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, MetodaReadToNextSibling method

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

ReadToFollowing, MetodaReadToFollowing method

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, MetodaReadToDescendant method

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

Zagadnienia dotyczące bezpieczeństwaSecurity considerations

Podczas pracy z XmlReader klasą należy wziąć pod uwagę następujące kwestie:Consider the following when working with the XmlReader class:

  • Wyjątki zgłoszone przez XmlReader program mogą ujawniać informacje o ścieżce, które mogą nie być przeznaczone do aplikacji.Exceptions thrown from the XmlReader can disclose path information that you might not want bubbled up to your app. Aplikacja musi przechwytywać wyjątki i przetwarzać je odpowiednio.Your app must catch exceptions and process them appropriately.

  • Nie należy włączać przetwarzania DTD, Jeśli obawiasz się o problemach z odmową usługi lub w przypadku korzystania z niezaufanych źródeł.Do not enable DTD processing if you're concerned about denial of service issues or if you're dealing with untrusted sources. Przetwarzanie DTD jest domyślnie wyłączone dla XmlReader obiektów utworzonych Create przez metodę.DTD processing is disabled by default for XmlReader objects created by the Create method.

    Jeśli jest włączone przetwarzanie DTD, można użyć XmlSecureResolver , aby ograniczyć zasoby XmlReader , do których może uzyskać dostęp.If you have DTD processing enabled, you can use the XmlSecureResolver to restrict the resources that the XmlReader can access. Możesz również projektować aplikację, tak aby przetwarzanie XML było ograniczone do pamięci i czasu.You can also design your app so that the XML processing is memory and time constrained. Można na przykład skonfigurować limity limitu czasu w aplikacji ASP.NET.For example, you can configure time-out limits in your ASP.NET app.

  • Dane XML mogą zawierać odwołania do zasobów zewnętrznych, takich jak plik schematu.XML data can include references to external resources such as a schema file. Domyślnie zasoby zewnętrzne są rozwiązywane przy użyciu XmlUrlResolver obiektu bez poświadczeń użytkownika.By default, external resources are resolved by using an XmlUrlResolver object with no user credentials. Aby zapewnić lepszą ochronę, wykonaj jedną z następujących czynności:You can secure this further by doing one of the following:

  • Flagi ProcessInlineSchema iProcessSchemaLocation Walidacja obiektuniesąustawianedomyślnie.XmlReaderSettingsThe ProcessInlineSchema and ProcessSchemaLocation validation flags of an XmlReaderSettings object aren't set by default. Ułatwia to ochronę XmlReader przed atakami opartymi na schemacie podczas przetwarzania danych XML z niezaufanego źródła.This helps to protect the XmlReader against schema-based attacks when it is processing XML data from an untrusted source. Gdy te flagi są ustawione, XmlResolver XmlReaderSettings obiekt jest używany do rozpoznawania lokalizacji schematu napotkanych w dokumencie wystąpienia w XmlReaderobiekcie.When these flags are set, the XmlResolver of the XmlReaderSettings object is used to resolve schema locations encountered in the instance document in the XmlReader. Jeśli właściwość jest ustawiona na null, lokalizacje schematu ProcessInlineSchema nie są rozpoznawane, nawet jeśli ProcessSchemaLocation flagi i walidacja są ustawione. XmlResolverIf the XmlResolver property is set to null, schema locations aren't resolved even if the ProcessInlineSchema and ProcessSchemaLocation validation flags are set.

    Schematy dodane podczas walidacji Dodaj nowe typy i można zmienić wynik walidacji zweryfikowanego dokumentu.Schemas added during validation add new types and can change the validation outcome of the document being validated. W związku z tym schematy zewnętrzne powinny być rozpoznawane tylko z zaufanych źródeł.As a result, external schemas should only be resolved from trusted sources.

    Zalecamy wyłączenie ProcessIdentityConstraints flagi podczas weryfikowania niezaufanych, dużych dokumentów XML w scenariuszach wysokiej dostępności względem schematu, który ma ograniczenia tożsamości w dużej części dokumentu.We recommend disabling the ProcessIdentityConstraints flag when validating untrusted, large XML documents in high availability scenarios against a schema that has identity constraints over a large part of the document. Ta flaga jest domyślnie włączona.This flag is enabled by default.

  • Dane XML mogą zawierać dużą liczbę atrybutów, deklaracji przestrzeni nazw, zagnieżdżonych elementów i tak dalej, które wymagają znacznego czasu na przetworzenie.XML data can contain a large number of attributes, namespace declarations, nested elements and so on that require a substantial amount of time to process. Aby ograniczyć rozmiar danych wejściowych wysyłanych do programu XmlReader, możesz:To limit the size of the input that is sent to the XmlReader, you can:

  • ReadValueChunk Metoda może służyć do obsługi dużych strumieni danych.The ReadValueChunk method can be used to handle large streams of data. Ta metoda odczytuje małą liczbę znaków w czasie zamiast przydzielać pojedynczy ciąg dla całej wartości.This method reads a small number of characters at a time instead of allocating a single string for the whole value.

  • W przypadku odczytywania dokumentu XML zawierającego dużą liczbę unikatowych nazw lokalnych, przestrzeni nazw lub prefiksów mogą wystąpić problemy.When reading an XML document with a large number of unique local names, namespaces, or prefixes, a problem can occur. Jeśli używasz klasy XmlReader, która pochodzi od, i LocalNamewywołujesz właściwość, Prefix, lub NamespaceURI NameTabledla każdego elementu, zwracany ciąg zostanie dodany do.If you are using a class that derives from XmlReader, and you call the LocalName, Prefix, or NamespaceURI property for each item, the returned string is added to a NameTable. Rozmiar kolekcji utrzymywanej przez NameTable nigdy nie zmniejsza się, tworząc wyciek pamięci wirtualnej uchwytów ciągu.The collection held by the NameTable never decreases in size, creating a virtual memory leak of the string handles. Jednym środkiem zaradczym jest wyprowadzenie z NameTable klasy i wymuszenie maksymalnego przydziału rozmiaru.One mitigation for this is to derive from the NameTable class and enforce a maximum size quota. (Nie ma żadnego sposobu, aby uniemożliwić korzystanie z programu NameTable, lub NameTable przełączyć się, gdy jest on pełny).(There is no way to prevent the use of a NameTable, or to switch the NameTable when it is full). Innym środkiem zaradczym jest uniknięcie użycia wymienionych właściwości i zamiast tego MoveToAttribute użycie metody z IsStartElement metodą, jeśli jest to możliwe; te metody nie zwracają ciągów i w ten sposób uniknąć problemu przepełniania NameTable kolekcji.Another mitigation is to avoid using the properties mentioned and instead use the MoveToAttribute method with the IsStartElement method where possible; those methods don't return strings and thus avoid the problem of overfilling the NameTable collection.

  • XmlReaderSettingsobiekty mogą zawierać poufne informacje, takie jak poświadczenia użytkownika.XmlReaderSettings objects can contain sensitive information such as user credentials. Niezaufany składnik może użyć XmlReaderSettings obiektu i jego poświadczeń użytkownika w celu utworzenia XmlReader obiektów do odczytu danych.An untrusted component could use the XmlReaderSettings object and its user credentials to create XmlReader objects to read data. Należy zachować ostrożność XmlReaderSettings podczas buforowania obiektów lub podczas XmlReaderSettings przekazywania obiektu z jednego składnika do drugiego.Be careful when caching XmlReaderSettings objects, or when passing the XmlReaderSettings object from one component to another.

  • Nie Akceptuj składników pomocniczych, takich jak NameTable, XmlNamespaceManageri XmlResolver obiektów, z niezaufanego źródła.Do not accept supporting components, such as NameTable, XmlNamespaceManager, and XmlResolver objects, from an untrusted source.

Konstruktory

XmlReader()

Inicjuje nowe wystąpienie klasy XmlReader klasy.Initializes a new instance of the XmlReader class.

Właściwości

AttributeCount

Gdy jest zastępowany w klasie pochodnej, pobiera liczbę atrybutów w bieżącym węźle.When overridden in a derived class, gets the number of attributes on the current node.

BaseURI

Gdy jest zastępowany w klasie pochodnej, pobiera podstawowy identyfikator URI bieżącego węzła.When overridden in a derived class, gets the base URI of the current node.

CanReadBinaryContent

Pobiera wartość wskazującą, czy XmlReader implementuje metody odczytywania zawartości binarnej.Gets a value indicating whether the XmlReader implements the binary content read methods.

CanReadValueChunk

Pobiera wartość wskazującą, czy XmlReader ReadValueChunk(Char[], Int32, Int32) implementuje metodę.Gets a value indicating whether the XmlReader implements the ReadValueChunk(Char[], Int32, Int32) method.

CanResolveEntity

Pobiera wartość wskazującą, czy ten czytnik może analizować i rozwiązywać jednostki.Gets a value indicating whether this reader can parse and resolve entities.

Depth

Gdy jest zastępowany w klasie pochodnej, pobiera głębokość bieżącego węzła w dokumencie XML.When overridden in a derived class, gets the depth of the current node in the XML document.

EOF

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy czytnik jest umieszczony na końcu strumienia.When overridden in a derived class, gets a value indicating whether the reader is positioned at the end of the stream.

HasAttributes

Pobiera wartość wskazującą, czy bieżący węzeł ma atrybuty.Gets a value indicating whether the current node has any attributes.

HasValue

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł może mieć Value.When overridden in a derived class, gets a value indicating whether the current node can have a Value.

IsDefault

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł jest atrybutem wygenerowanym z wartości domyślnej zdefiniowanej w DTD lub schemacie.When overridden in a derived class, gets a value indicating whether the current node is an attribute that was generated from the default value defined in the DTD or schema.

IsEmptyElement

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy bieżący węzeł jest pustym elementem (na przykład <element/>).When overridden in a derived class, gets a value indicating whether the current node is an empty element (for example, <MyElement/>).

Item[Int32]

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu o określonym indeksie.When overridden in a derived class, gets the value of the attribute with the specified index.

Item[String, String]

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu z określonym LocalName i. NamespaceURIWhen overridden in a derived class, gets the value of the attribute with the specified LocalName and NamespaceURI.

Item[String]

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu z określonym Name.When overridden in a derived class, gets the value of the attribute with the specified Name.

LocalName

Gdy jest zastępowany w klasie pochodnej, pobiera lokalną nazwę bieżącego węzła.When overridden in a derived class, gets the local name of the current node.

Name

Gdy jest zastępowany w klasie pochodnej, pobiera kwalifikowaną nazwę bieżącego węzła.When overridden in a derived class, gets the qualified name of the current node.

NamespaceURI

Gdy jest zastępowany w klasie pochodnej, pobiera identyfikator URI przestrzeni nazw (zgodnie z definicją w specyfikacji przestrzeni nazw W3C) węzła, na którym jest umieszczony czytnik.When overridden in a derived class, gets the namespace URI (as defined in the W3C Namespace specification) of the node on which the reader is positioned.

NameTable

Gdy jest zastępowany w klasie pochodnej, pobiera XmlNameTable skojarzoną z tą implementacją.When overridden in a derived class, gets the XmlNameTable associated with this implementation.

NodeType

Gdy jest zastępowany w klasie pochodnej, pobiera typ bieżącego węzła.When overridden in a derived class, gets the type of the current node.

Prefix

Gdy jest zastępowany w klasie pochodnej, Pobiera prefiks przestrzeni nazw skojarzony z bieżącym węzłem.When overridden in a derived class, gets the namespace prefix associated with the current node.

QuoteChar

Gdy jest zastępowany w klasie pochodnej, pobiera znak cudzysłowu używany do umieszczania wartości węzła atrybutu.When overridden in a derived class, gets the quotation mark character used to enclose the value of an attribute node.

ReadState

Gdy jest zastępowany w klasie pochodnej, Pobiera stan czytnika.When overridden in a derived class, gets the state of the reader.

SchemaInfo

Pobiera informacje o schemacie, które zostały przypisane do bieżącego węzła w wyniku walidacji schematu.Gets the schema information that has been assigned to the current node as a result of schema validation.

Settings

Pobiera obiekt użyty do utworzenia tego XmlReader wystąpienia. XmlReaderSettingsGets the XmlReaderSettings object used to create this XmlReader instance.

Value

Gdy jest zastępowany w klasie pochodnej, pobiera wartość tekstową bieżącego węzła.When overridden in a derived class, gets the text value of the current node.

ValueType

Pobiera typ środowiska uruchomieniowego języka wspólnego (CLR) dla bieżącego węzła.Gets The Common Language Runtime (CLR) type for the current node.

XmlLang

Gdy jest zastępowany w klasie pochodnej, pobiera bieżący xml:lang zakres.When overridden in a derived class, gets the current xml:lang scope.

XmlSpace

Gdy jest zastępowany w klasie pochodnej, pobiera bieżący xml:space zakres.When overridden in a derived class, gets the current xml:space scope.

Metody

Close()

Gdy jest zastępowany w klasie pochodnej, zmieni ReadState się Closedna.When overridden in a derived class, changes the ReadState to Closed.

Create(Stream)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego strumienia z ustawieniami domyślnymi.Creates a new XmlReader instance using the specified stream with default settings.

Create(Stream, XmlReaderSettings)

Tworzy nowe XmlReader wystąpienie o określonym strumieniu i ustawieniach.Creates a new XmlReader instance with the specified stream and settings.

Create(Stream, XmlReaderSettings, String)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego strumienia, podstawowego identyfikatora URI i ustawień.Creates a new XmlReader instance using the specified stream, base URI, and settings.

Create(Stream, XmlReaderSettings, XmlParserContext)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego strumienia, ustawień i informacji kontekstowych do analizy.Creates a new XmlReader instance using the specified stream, settings, and context information for parsing.

Create(String)

Tworzy nowe XmlReader wystąpienie o określonym identyfikatorze URI.Creates a new XmlReader instance with specified URI.

Create(String, XmlReaderSettings)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego identyfikatora URI i ustawień.Creates a new XmlReader instance by using the specified URI and settings.

Create(String, XmlReaderSettings, XmlParserContext)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego identyfikatora URI, ustawień i informacji kontekstowych do analizy.Creates a new XmlReader instance by using the specified URI, settings, and context information for parsing.

Create(TextReader)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego czytnika tekstu.Creates a new XmlReader instance by using the specified text reader.

Create(TextReader, XmlReaderSettings)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego czytnika tekstu i ustawień.Creates a new XmlReader instance by using the specified text reader and settings.

Create(TextReader, XmlReaderSettings, String)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego czytnika tekstu, ustawień i podstawowego identyfikatora URI.Creates a new XmlReader instance by using the specified text reader, settings, and base URI.

Create(TextReader, XmlReaderSettings, XmlParserContext)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego czytnika tekstu, ustawień i informacji kontekstowych do analizy.Creates a new XmlReader instance by using the specified text reader, settings, and context information for parsing.

Create(XmlReader, XmlReaderSettings)

Tworzy nowe XmlReader wystąpienie przy użyciu określonego czytnika i ustawień XML.Creates a new XmlReader instance by using the specified XML reader and settings.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie XmlReader klasy.Releases all resources used by the current instance of the XmlReader class.

Dispose(Boolean)

Zwalnia niezarządzane zasoby używane przez XmlReader program i opcjonalnie zwalnia zarządzane zasoby.Releases the unmanaged resources used by the XmlReader and optionally releases the managed resources.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetAttribute(Int32)

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu o określonym indeksie.When overridden in a derived class, gets the value of the attribute with the specified index.

GetAttribute(String)

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu z określonym Name.When overridden in a derived class, gets the value of the attribute with the specified Name.

GetAttribute(String, String)

Gdy jest zastępowany w klasie pochodnej, pobiera wartość atrybutu z określonym LocalName i. NamespaceURIWhen overridden in a derived class, gets the value of the attribute with the specified LocalName and NamespaceURI.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
GetValueAsync()

Asynchronicznie Pobiera wartość bieżącego węzła.Asynchronously gets the value of the current node.

IsName(String)

Zwraca wartość wskazującą, czy argument ciągu jest prawidłową nazwą XML.Returns a value indicating whether the string argument is a valid XML name.

IsNameToken(String)

Zwraca wartość wskazującą, czy argument ciągu jest prawidłowym tokenem nazwy XML.Returns a value indicating whether or not the string argument is a valid XML name token.

IsStartElement()

Wywołania MoveToContent() i testy, jeśli bieżący węzeł zawartości jest tagiem początkowym lub pustym tagiem elementu.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag.

IsStartElement(String)

Wywołania MoveToContent() i testy, jeśli bieżący węzeł zawartości jest tagiem początkowym lub pustym tagiem elementu i Name Jeśli właściwość znalezionego elementu pasuje do podanego argumentu.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the Name property of the element found matches the given argument.

IsStartElement(String, String)

Wywołania MoveToContent() i testy, jeśli bieżący węzeł zawartości jest tagiem początkowym lub pustym tagiem elementu i LocalName Jeśli właściwości NamespaceURI i elementu znalezione są zgodne z podanymi ciągami.Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the LocalName and NamespaceURI properties of the element found match the given strings.

LookupNamespace(String)

Gdy jest zastępowany w klasie pochodnej, rozpoznaje prefiks przestrzeni nazw w zakresie bieżącego elementu.When overridden in a derived class, resolves a namespace prefix in the current element's scope.

MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MoveToAttribute(Int32)

Gdy jest zastępowany w klasie pochodnej, przenosi do atrybutu o określonym indeksie.When overridden in a derived class, moves to the attribute with the specified index.

MoveToAttribute(String)

Gdy jest zastępowany w klasie pochodnej, przenosi do atrybutu z określonym Name.When overridden in a derived class, moves to the attribute with the specified Name.

MoveToAttribute(String, String)

Gdy jest zastępowany w klasie pochodnej, przenosi do atrybutu z określonym LocalName i. NamespaceURIWhen overridden in a derived class, moves to the attribute with the specified LocalName and NamespaceURI.

MoveToContent()

Sprawdza, czy bieżący węzeł to zawartość (tekst niebędący odstępem, CDATA EntityReference Element EndElement,,, lub EndEntity) węzeł.Checks whether the current node is a content (non-white space text, CDATA, Element, EndElement, EntityReference, or EndEntity) node. Jeśli węzeł nie jest węzłem zawartości, czytnik przechodzi do następnego węzła zawartości lub końca pliku.If the node is not a content node, the reader skips ahead to the next content node or end of file. Powoduje to pominięcie węzłów następującego typu: ProcessingInstruction, DocumentType, Comment Whitespace, lub SignificantWhitespace.It skips over nodes of the following type: ProcessingInstruction, DocumentType, Comment, Whitespace, or SignificantWhitespace.

MoveToContentAsync()

Asynchronicznie sprawdza, czy bieżący węzeł jest węzłem zawartości.Asynchronously checks whether the current node is a content node. Jeśli węzeł nie jest węzłem zawartości, czytnik przechodzi do następnego węzła zawartości lub końca pliku.If the node is not a content node, the reader skips ahead to the next content node or end of file.

MoveToElement()

Gdy jest zastępowany w klasie pochodnej, przenosi do elementu, który zawiera bieżący węzeł atrybutu.When overridden in a derived class, moves to the element that contains the current attribute node.

MoveToFirstAttribute()

Gdy jest zastępowany w klasie pochodnej, przenosi do pierwszego atrybutu.When overridden in a derived class, moves to the first attribute.

MoveToNextAttribute()

Gdy jest zastępowany w klasie pochodnej, przenosi do następnego atrybutu.When overridden in a derived class, moves to the next attribute.

Read()

Gdy jest zastępowany w klasie pochodnej, odczytuje następny węzeł ze strumienia.When overridden in a derived class, reads the next node from the stream.

ReadAsync()

Asynchronicznie odczytuje następny węzeł ze strumienia.Asynchronously reads the next node from the stream.

ReadAttributeValue()

Gdy jest zastępowany w klasie pochodnej, analizuje wartość atrybutu w jeden lub więcej Text, EntityReferencelub EndEntity węzłów.When overridden in a derived class, parses the attribute value into one or more Text, EntityReference, or EndEntity nodes.

ReadContentAs(Type, IXmlNamespaceResolver)

Odczytuje zawartość jako obiekt określonego typu.Reads the content as an object of the type specified.

ReadContentAsAsync(Type, IXmlNamespaceResolver)

Asynchronicznie odczytuje zawartość jako obiekt określonego typu.Asynchronously reads the content as an object of the type specified.

ReadContentAsBase64(Byte[], Int32, Int32)

Odczytuje zawartość i zwraca zdekodowane bajty binarne w formacie base64.Reads the content and returns the Base64 decoded binary bytes.

ReadContentAsBase64Async(Byte[], Int32, Int32)

Asynchronicznie odczytuje zawartość i zwraca zdekodowane bajty binarne kodowane algorytmem Base64.Asynchronously reads the content and returns the Base64 decoded binary bytes.

ReadContentAsBinHex(Byte[], Int32, Int32)

Odczytuje zawartość i zwraca BinHex zdekodowane bajty binarne.Reads the content and returns the BinHex decoded binary bytes.

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje zawartość i zwraca BinHex zdekodowane bajty binarne.Asynchronously reads the content and returns the BinHex decoded binary bytes.

ReadContentAsBoolean()

Odczytuje zawartość tekstową w bieżącym położeniu jako Boolean.Reads the text content at the current position as a Boolean.

ReadContentAsDateTime()

Odczytuje zawartość tekstową w bieżącym położeniu jako DateTime obiekt.Reads the text content at the current position as a DateTime object.

ReadContentAsDateTimeOffset()

Odczytuje zawartość tekstową w bieżącym położeniu jako DateTimeOffset obiekt.Reads the text content at the current position as a DateTimeOffset object.

ReadContentAsDecimal()

Odczytuje zawartość tekstową w bieżącym położeniu jako Decimal obiekt.Reads the text content at the current position as a Decimal object.

ReadContentAsDouble()

Odczytuje zawartość tekstową w bieżącym położeniu jako liczbę zmiennoprzecinkową o podwójnej precyzji.Reads the text content at the current position as a double-precision floating-point number.

ReadContentAsFloat()

Odczytuje zawartość tekstową w bieżącym położeniu jako liczbę zmiennoprzecinkową o pojedynczej precyzji.Reads the text content at the current position as a single-precision floating point number.

ReadContentAsInt()

Odczytuje zawartość tekstową w bieżącym położeniu jako 32-bitową liczbę całkowitą ze znakiem.Reads the text content at the current position as a 32-bit signed integer.

ReadContentAsLong()

Odczytuje zawartość tekstową w bieżącym położeniu jako 64-bitową liczbę całkowitą ze znakiem.Reads the text content at the current position as a 64-bit signed integer.

ReadContentAsObject()

Odczytuje zawartość tekstową w bieżącym położeniu jako Object.Reads the text content at the current position as an Object.

ReadContentAsObjectAsync()

Asynchronicznie odczytuje zawartość tekstową w bieżącym położeniu jako Object.Asynchronously reads the text content at the current position as an Object.

ReadContentAsString()

Odczytuje zawartość tekstową w bieżącym położeniu jako String obiekt.Reads the text content at the current position as a String object.

ReadContentAsStringAsync()

Asynchronicznie odczytuje zawartość tekstową w bieżącym położeniu jako String obiekt.Asynchronously reads the text content at the current position as a String object.

ReadElementContentAs(Type, IXmlNamespaceResolver)

Odczytuje zawartość elementu jako żądany typ.Reads the element content as the requested type.

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje zawartość elementu jako żądany typ.Checks that the specified local name and namespace URI matches that of the current element, then reads the element content as the requested type.

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

Asynchronicznie odczytuje zawartość elementu jako żądany typ.Asynchronously reads the element content as the requested type.

ReadElementContentAsBase64(Byte[], Int32, Int32)

Odczytuje element i dekoduje Base64 zawartość.Reads the element and decodes the Base64 content.

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

Asynchronicznie odczytuje element i dekoduje Base64 zawartość.Asynchronously reads the element and decodes the Base64 content.

ReadElementContentAsBinHex(Byte[], Int32, Int32)

Odczytuje element i dekoduje BinHex zawartość.Reads the element and decodes the BinHex content.

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje element i dekoduje BinHex zawartość.Asynchronously reads the element and decodes the BinHex content.

ReadElementContentAsBoolean()

Odczytuje bieżący element i zwraca zawartość jako Boolean obiekt.Reads the current element and returns the contents as a Boolean object.

ReadElementContentAsBoolean(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako Boolean obiekt.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Boolean object.

ReadElementContentAsDateTime()

Odczytuje bieżący element i zwraca zawartość jako DateTime obiekt.Reads the current element and returns the contents as a DateTime object.

ReadElementContentAsDateTime(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako DateTime obiekt.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a DateTime object.

ReadElementContentAsDecimal()

Odczytuje bieżący element i zwraca zawartość jako Decimal obiekt.Reads the current element and returns the contents as a Decimal object.

ReadElementContentAsDecimal(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako Decimal obiekt.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Decimal object.

ReadElementContentAsDouble()

Odczytuje bieżący element i zwraca zawartość jako liczbę zmiennoprzecinkową o podwójnej precyzji.Reads the current element and returns the contents as a double-precision floating-point number.

ReadElementContentAsDouble(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako liczbę zmiennoprzecinkową o podwójnej precyzji.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a double-precision floating-point number.

ReadElementContentAsFloat()

Odczytuje bieżący element i zwraca zawartość jako liczbę zmiennoprzecinkową o pojedynczej precyzji.Reads the current element and returns the contents as single-precision floating-point number.

ReadElementContentAsFloat(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako liczbę zmiennoprzecinkową o pojedynczej precyzji.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a single-precision floating-point number.

ReadElementContentAsInt()

Odczytuje bieżący element i zwraca zawartość jako 32-bitową liczbę całkowitą ze znakiem.Reads the current element and returns the contents as a 32-bit signed integer.

ReadElementContentAsInt(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako 32-bitową liczbę całkowitą ze znakiem.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 32-bit signed integer.

ReadElementContentAsLong()

Odczytuje bieżący element i zwraca zawartość jako 64-bitową liczbę całkowitą ze znakiem.Reads the current element and returns the contents as a 64-bit signed integer.

ReadElementContentAsLong(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako 64-bitową liczbę całkowitą ze znakiem.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 64-bit signed integer.

ReadElementContentAsObject()

Odczytuje bieżący element i zwraca zawartość jako Object.Reads the current element and returns the contents as an Object.

ReadElementContentAsObject(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako Object.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as an Object.

ReadElementContentAsObjectAsync()

Asynchronicznie odczytuje bieżący element i zwraca zawartość jako Object.Asynchronously reads the current element and returns the contents as an Object.

ReadElementContentAsString()

Odczytuje bieżący element i zwraca zawartość jako String obiekt.Reads the current element and returns the contents as a String object.

ReadElementContentAsString(String, String)

Sprawdza, czy określona nazwa lokalna i identyfikator URI przestrzeni nazw są zgodne z bieżącym elementem, a następnie odczytuje bieżący element i zwraca zawartość jako String obiekt.Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a String object.

ReadElementContentAsStringAsync()

Asynchronicznie odczytuje bieżący element i zwraca zawartość jako String obiekt.Asynchronously reads the current element and returns the contents as a String object.

ReadElementString()

Odczytuje element tekstowy.Reads a text-only element. Zaleca się jednak użycie ReadElementContentAsString() metody zamiast tego, ponieważ zapewnia ona bardziej nieskomplikowany sposób obsługi tej operacji.However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation.

ReadElementString(String)

Sprawdza, czy Name Właściwość znalezionego elementu jest zgodna z podanym ciągiem przed odczytem elementu tekstowego.Checks that the Name property of the element found matches the given string before reading a text-only element. Zaleca się jednak użycie ReadElementContentAsString() metody zamiast tego, ponieważ zapewnia ona bardziej nieskomplikowany sposób obsługi tej operacji.However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation.

ReadElementString(String, String)

Sprawdza, czy LocalName właściwości NamespaceURI i elementu znalezione są zgodne z podanymi ciągami przed odczytem elementu tekstowego.Checks that the LocalName and NamespaceURI properties of the element found matches the given strings before reading a text-only element. Zaleca się jednak użycie ReadElementContentAsString(String, String) metody zamiast tego, ponieważ zapewnia ona bardziej nieskomplikowany sposób obsługi tej operacji.However, we recommend that you use the ReadElementContentAsString(String, String) method instead, because it provides a more straightforward way to handle this operation.

ReadEndElement()

Sprawdza, czy bieżący węzeł zawartości jest tagiem końcowym i przesuwa czytnik do następnego węzła.Checks that the current content node is an end tag and advances the reader to the next node.

ReadInnerXml()

Gdy jest zastępowany w klasie pochodnej, odczytuje całą zawartość, w tym znaczniki, jako ciąg.When overridden in a derived class, reads all the content, including markup, as a string.

ReadInnerXmlAsync()

Asynchronicznie odczytuje całą zawartość, w tym znaczniki, w postaci ciągu.Asynchronously reads all the content, including markup, as a string.

ReadOuterXml()

Gdy jest zastępowany w klasie pochodnej, odczytuje zawartość, włącznie z adiustacją, reprezentującą ten węzeł i jego wszystkie elementy podrzędne.When overridden in a derived class, reads the content, including markup, representing this node and all its children.

ReadOuterXmlAsync()

Asynchronicznie odczytuje zawartość, łącznie z adiustacją, reprezentującą ten węzeł i jego wszystkie elementy podrzędne.Asynchronously reads the content, including markup, representing this node and all its children.

ReadStartElement()

Sprawdza, czy bieżący węzeł jest elementem i przesuwa czytnik do następnego węzła.Checks that the current node is an element and advances the reader to the next node.

ReadStartElement(String)

Sprawdza, czy bieżący węzeł zawartości jest elementem z danym i uzyskuje Name od czytnika do następnego węzła.Checks that the current content node is an element with the given Name and advances the reader to the next node.

ReadStartElement(String, String)

Sprawdza, czy bieżący węzeł zawartości jest elementem z danym LocalName i NamespaceURI i przechodzi do następnego węzła.Checks that the current content node is an element with the given LocalName and NamespaceURI and advances the reader to the next node.

ReadString()

Gdy jest zastępowany w klasie pochodnej, odczytuje zawartość elementu lub węzła tekstowego jako ciąg.When overridden in a derived class, reads the contents of an element or text node as a string. Zaleca się jednak użycie ReadElementContentAsString metody zamiast tego, ponieważ zapewnia ona bardziej nieskomplikowany sposób obsługi tej operacji.However, we recommend that you use the ReadElementContentAsString method instead, because it provides a more straightforward way to handle this operation.

ReadSubtree()

Zwraca nowe XmlReader wystąpienie, za pomocą którego można odczytać bieżący węzeł i wszystkie jego obiekty podrzędne.Returns a new XmlReader instance that can be used to read the current node, and all its descendants.

ReadToDescendant(String)

XmlReader Przechodzi do następnego elementu podrzędnego z określoną nazwą kwalifikowaną.Advances the XmlReader to the next descendant element with the specified qualified name.

ReadToDescendant(String, String)

XmlReader Przechodzi do następnego elementu podrzędnego z określoną nazwą lokalną i identyfikatorem URI przestrzeni nazw.Advances the XmlReader to the next descendant element with the specified local name and namespace URI.

ReadToFollowing(String)

Odczytuje do momentu znalezienia elementu z określoną nazwą kwalifikowaną.Reads until an element with the specified qualified name is found.

ReadToFollowing(String, String)

Odczytuje do momentu znalezienia elementu z określoną nazwą lokalną i identyfikatorem URI przestrzeni nazw.Reads until an element with the specified local name and namespace URI is found.

ReadToNextSibling(String)

XmlReader Przechodzi do następnego elementu równorzędnego z określoną nazwą kwalifikowaną.Advances the XmlReader to the next sibling element with the specified qualified name.

ReadToNextSibling(String, String)

XmlReader Przechodzi do następnego elementu równorzędnego z określoną nazwą lokalną i identyfikatorem URI przestrzeni nazw.Advances the XmlReader to the next sibling element with the specified local name and namespace URI.

ReadValueChunk(Char[], Int32, Int32)

Odczytuje duże strumienie tekstu osadzone w dokumencie XML.Reads large streams of text embedded in an XML document.

ReadValueChunkAsync(Char[], Int32, Int32)

Asynchronicznie odczytuje duże strumienie tekstu osadzone w dokumencie XML.Asynchronously reads large streams of text embedded in an XML document.

ResolveEntity()

Gdy jest zastępowany w klasie pochodnej, rozpoznaje odwołanie do jednostki EntityReference dla węzłów.When overridden in a derived class, resolves the entity reference for EntityReference nodes.

Skip()

Pomija elementy podrzędne bieżącego węzła.Skips the children of the current node.

SkipAsync()

Asynchronicznie pomija elementy podrzędne bieżącego węzła.Asynchronously skips the children of the current node.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDisposable.Dispose()

Aby uzyskać opis tego elementu członkowskiego, Dispose()Zobacz.For a description of this member, see Dispose().

Dotyczy

Zobacz też