System.Xml Namespace

Der System.Xml-Namespace stellt standardbasierte Unterstützung für die XML-Verarbeitung bereit. The System.Xml namespace provides standards-based support for processing XML.

Klassen

NameTable

Implementiert eine Singlethread-XmlNameTable. Implements a single-threaded XmlNameTable.

UniqueId

Ein für GUIDs optimierter eindeutiger Bezeichner. A unique identifier optimized for Guids.

XmlAttribute

Stellt ein XML-Attribut dar. Represents an attribute. Gültige Werte und Standardwerte für das Attribut werden in einer Dokumenttypdefinition (DTD) oder ein Schema definiert. Valid and default values for the attribute are defined in a document type definition (DTD) or schema.

XmlAttributeCollection

Stellt eine Auflistung von Attributen dar, auf die nach Name oder Index zugegriffen werden kann. Represents a collection of attributes that can be accessed by name or index.

XmlBinaryReaderSession

Aktiviert optimierte Zeichenfolgen, die auf dynamische Weise verwaltet werden sollen. Enables optimized strings to be managed in a dynamic way.

XmlBinaryWriterSession

Ermöglicht die Komprimierung allgemeiner Zeichenfolgen, die in einer Nachricht erscheinen und den Zustand beibehalten, unter Verwendung eines dynamischen Wörterbuchs. Enables using a dynamic dictionary to compress common strings that appear in a message and maintain state.

XmlCDataSection

Stellt einen CDATA-Abschnitt dar. Represents a CDATA section.

XmlCharacterData

Stellt Textmanipulationsmethoden, die von mehreren Klassen verwendet werden. Provides text manipulation methods that are used by several classes.

XmlComment

Stellt den Inhalt eines SOAP-Headers dar. Represents the content of an XML comment.

XmlConvert

Codiert und decodiert XML-Namen und stellt Methoden für das Konvertieren zwischen Typen der Common Language Runtime und XSD-Typen (XML Schema Definition) bereit. Encodes and decodes XML names, and provides methods for converting between common language runtime types and XML Schema definition language (XSD) types. Bei der Konvertierung von Datentypen sind die zurückgegebenen Werte vom Gebietsschema unabhängig. When converting data types, the values returned are locale-independent.

XmlDataDocument

Ermöglicht das Speichern, Abrufen und Bearbeiten strukturierter Daten über ein relationales DataSet. Allows structured data to be stored, retrieved, and manipulated through a relational DataSet.

XmlDeclaration

Stellt den Knoten für die XML-Deklaration <?xml version='1.0'...?> dar. Represents the XML declaration node <?xml version='1.0'...?>.

XmlDictionary

Implementiert ein Wörterbuch, mit dem die XML-Reader-/Writerimplementierungen der Windows Communication Foundation (WCF) optimiert werden. Implements a dictionary used to optimize Windows Communication Foundation (WCF)'s XML reader/writer implementations.

XmlDictionaryReader

Eine abstract-Klasse, die die Windows Communication Foundation (WCF) von XmlReader ableitet, um Serialisierung und Deserialisierung durchzuführen. An abstract class that the Windows Communication Foundation (WCF) derives from XmlReader to do serialization and deserialization.

XmlDictionaryReaderQuotas

Enthält konfigurierbare Kontingentwerte für XmlDictionaryReaders. Contains configurable quota values for XmlDictionaryReaders.

XmlDictionaryString

Stellt einen in XmlDictionary gespeicherten Eintrag dar. Represents an entry stored in a XmlDictionary.

XmlDictionaryWriter

Stellt eine abstrakte Klasse dar, die die Windows Communication Foundation (WCF) von XmlWriter ableitet, um Serialisierung und Deserialisierung durchzuführen. Represents an abstract class that Windows Communication Foundation (WCF) derives from XmlWriter to do serialization and deserialization.

XmlDocument

Stellt ein XML-Dokument dar. Represents an XML document. Sie können diese Klasse zum Laden, Überprüfen, Bearbeiten, Hinzufügen und Positionieren von XML in einem Dokument verwenden. You can use this class to load, validate, edit, add, and position XML in a document.

XmlDocumentFragment

Stellt ein einfaches Objekt dar, das für das Einfügen in Strukturen nützlich ist. Represents a lightweight object that is useful for tree insert operations.

XmlDocumentType

Stellt die Dokumenttypdeklaration dar. Represents the document type declaration.

XmlDocumentXPathExtensions
XmlElement

Stellt einen Element dar. Represents an element.

XmlEntity

Stellt eine Entitätsdeklaration dar, z.B. <!ENTITY...> . Represents an entity declaration, such as <!ENTITY... >.

XmlEntityReference

Stellt einen Entitätsverweisknoten dar. Represents an entity reference node.

XmlException

Gibt ausführliche Informationen über die letzte Ausnahme zurück. Returns detailed information about the last exception.

XmlImplementation

Definiert den Kontext für eine Gruppe von XmlDocument-Objekten Defines the context for a set of XmlDocument objects.

XmlLinkedNode

Ruft den Knoten ab, der diesem Knoten unmittelbar vorausgeht oder darauf folgt. Gets the node immediately preceding or following this node.

XmlNamedNodeMap

Stellt eine Auflistung von Knoten dar, auf die nach Name oder Index zugegriffen werden kann. Represents a collection of nodes that can be accessed by name or index.

XmlNamespaceManager

Löst Namespaces auf, fügt sie einer Auflistung hinzu bzw. entfernt sie daraus und ermöglicht die Verwaltung der Gültigkeitsbereiche dieser Namespaces. Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.

XmlNameTable

Tabelle mit atomisierten Zeichenfolgenobjekten. Table of atomized string objects.

XmlNode

Stellt einen einzelnen Knoten im XML-Dokument dar. Represents a single node in the XML document.

XmlNodeChangedEventArgs

Stellt Daten für das NodeChanged-Ereignis, das NodeChanging-Ereignis, das NodeInserted-Ereignis, das NodeInserting-Ereignis, das NodeRemoved-Ereignis und das NodeRemoving-Ereignis bereit. Provides data for the NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

XmlNodeList

Stellt eine geordnete Auflistung von Knoten dar. Represents an ordered collection of nodes.

XmlNodeReader

Stellt einen Reader dar, der schnellen, nicht zwischengespeicherten Vorwärtszugriff auf XML-Daten in einem XmlNode bietet. Represents a reader that provides fast, non-cached forward only access to XML data in an XmlNode.

XmlNotation

Stellt eine Notationsdeklaration dar, z.B. <!NOTATION... >. Represents a notation declaration, such as <!NOTATION... >.

XmlParserContext

Stellt sämtliche Kontextinformationen bereit, die von XmlReader für das Analysieren eines XML-Fragments benötigt werden. Provides all the context information required by the XmlReader to parse an XML fragment.

XmlProcessingInstruction

Stellt eine Verarbeitungsanweisung dar, die in XML definiert wird, um prozessorspezifische Informationen im Text des Dokuments beizubehalten. Represents a processing instruction, which XML defines to keep processor-specific information in the text of the document.

XmlQualifiedName

Stellt einen qualifizierten XML-Namen dar. Represents an XML qualified name.

XmlReader

Stellt einen Reader dar, der einen schnellen Zugriff auf XML-Daten bietet, ohne Zwischenspeicher und welcher nur vorwärts möglich ist. Represents a reader that provides fast, noncached, forward-only access to XML data.

XmlReaderSettings

Gibt eine Gruppe von Features an, die für das XmlReader-Objekt unterstützt werden sollen, das von der Create-Methode erstellt wurde. Specifies a set of features to support on the XmlReader object created by the Create method.

XmlResolver

Löst externe XML-Ressourcen auf, die durch einen URI (Uniform Resource Identifier) benannt werden. Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlSecureResolver

Schützt eine andere Implementierung von XmlResolver, indem das XmlResolver-Objekt umschlossen wird und der Zugriff auf die Ressourcen beschränkt wird, auf die der zugrunde liegende XmlResolver Zugriff hat. Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

XmlSignificantWhitespace

Stellt ein Leerzeichen zwischen Markup in einem Knoten mit gemischtem Inhalt oder ein Leerzeichen innerhalb eines xml:space= "preserve"-Bereichs dar. Represents white space between markup in a mixed content node or white space within an xml:space= 'preserve' scope. Dies wird auch als signifikantes Leerzeichen bezeichnet. This is also referred to as significant white space.

XmlText

Stellt den Textinhalt eines Elements oder Attributs dar. Represents the text content of an element or attribute.

XmlTextReader

Stellt einen Reader dar, der schnellen, nicht zwischengespeicherten Vorwärtszugriff auf XML-Daten bietet. Represents a reader that provides fast, non-cached, forward-only access to XML data. Ab .NET Framework 2.0 sollten Sie stattdessen die XmlReader-Klasse verwenden. Starting with the .NET Framework 2.0, we recommend that you use the XmlReader class instead.

XmlTextWriter

Stellt einen Writer für die schnelle, nicht zwischengespeicherte Vorwärtsgenerierung von Streams oder Dateien dar, die XML-Daten gemäß den W3C-Empfehlungen zu XML (Extensible Markup Language), Version 1.0, und zu Namespaces in XML enthalten. Represents a writer that provides a fast, non-cached, forward-only way of generating streams or files containing XML data that conforms to the W3C Extensible Markup Language (XML) 1.0 and the Namespaces in XML recommendations. Ab .NET Framework 2.0 sollten Sie stattdessen die XmlWriter-Klasse verwenden. Starting with the .NET Framework 2.0, we recommend that you use the XmlWriter class instead.

XmlUrlResolver

Löst externe XML-Ressourcen auf, die durch einen URI (Uniform Resource Identifier) benannt werden. Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlValidatingReader

Stellt einen Reader dar, der die Schemavalidierung für DTD (Dokumenttypdefinition), XDR (XML-Data Reduced)-Schemas und XSD (XML Schema Definition Language)-Schemas bereitstellt. Represents a reader that provides document type definition (DTD), XML-Data Reduced (XDR) schema, and XML Schema definition language (XSD) validation. Diese Klasse ist veraltet. This class is obsolete. Ausgehend von .NET Framework 2.0 wird empfohlen, die XmlReaderSettings-Klasse und die Create-Methode zum Erstellen eines überprüfenden XML-Readers zu verwenden. Starting with the .NET Framework 2.0, we recommend that you use the XmlReaderSettings class and the Create method to create a validating XML reader.

XmlWhitespace

Stellt Leerzeichen im Elementinhalt dar. Represents white space in element content.

XmlWriter

Stellt einen Writer für die schnelle, vorwärts gerichtete Generierung von Streams oder Dateien mit XML-Daten ohne Zwischenspeicherung dar. Represents a writer that provides a fast, non-cached, forward-only way to generate streams or files that contain XML data.

XmlWriterSettings

Gibt eine Gruppe von Features an, die für das XmlWriter-Objekt unterstützt werden sollen, das von der Create-Methode erstellt wurde. Specifies a set of features to support on the XmlWriter object created by the Create method.

XmlXapResolver

Der XmlXapResolver-Typ wird verwendet, um Ressourcen im XAP-Paket der Silverlight-Anwendung aufzulösen. The XmlXapResolver type is used to resolve resources in the Silverlight application’s XAP package.

Schnittstellen

IApplicationResourceStreamResolver

Stellt einen Anwendungsressourcen-Streamresolver dar. Represents an application resource stream resolver.

IFragmentCapableXmlDictionaryWriter

Enthält Eigenschaften und Methoden, die die Verarbeitung von XML-Fragmenten ermöglichen, wenn sie von XmlDictionaryWriter implementiert werden. Contains properties and methods that when implemented by a XmlDictionaryWriter, allows processing of XML fragments.

IHasXmlNode

Ermöglicht einer Klasse die Rückgabe eines XmlNode aus dem aktuellen Kontext oder der aktuellen Position. Enables a class to return an XmlNode from the current context or position.

IStreamProvider

Stellt eine Schnittstelle, die von Klassen implementiert werden kann, die Streams bereitstellen. Represents an interface that can be implemented by classes providing streams.

IXmlBinaryReaderInitializer

Stellt Methoden zur erneuten Initialisierung eines binären Readers bereit, um ein neues Dokument zu lesen. Provides methods for reinitializing a binary reader to read a new document.

IXmlBinaryWriterInitializer

Gibt Implementierungsanforderungen für binäre XML-Writer an, die sich von dieser Schnittstelle ableiten. Specifies implementation requirements for XML binary writers that derive from this interface.

IXmlDictionary

Eine interface, die den Vertrag definiert, den ein XML-Wörterbuch implementieren muss, um von XmlDictionaryReader-Implementierungen und XmlDictionaryWriter-Implementierungen genutzt zu werden. An interface that defines the contract that an Xml dictionary must implement to be used by XmlDictionaryReader and XmlDictionaryWriter implementations.

IXmlLineInfo

Stellt eine Schnittstelle bereit, die einer Klasse die Rückgabe von Zeilen- und Positionsinformationen ermöglicht. Provides an interface to enable a class to return line and position information.

IXmlMtomReaderInitializer

Gibt Implementierungsanforderungen für XML-MTOM-Reader an, die sich von dieser Schnittstelle ableiten. Specifies implementation requirements for XML MTOM readers that derive from this interface.

IXmlMtomWriterInitializer

Wenn die Schnittstelle von einem MTOM-Writer implementiert wird, wird durch sie die Initialisierung für einen MTOM-Writer sichergestellt. When implemented by an MTOM writer, this interface ensures initialization for an MTOM writer.

IXmlNamespaceResolver

Ermöglicht schreibgeschützten Zugriff auf einen Satz von Präfix- und Namespacezuordnungen. Provides read-only access to a set of prefix and namespace mappings.

IXmlTextReaderInitializer

Gibt Implementierungsanforderungen für XML-Textreader an, die sich von dieser Schnittstelle ableiten. Specifies implementation requirements for XML text readers that derive from this interface.

IXmlTextWriterInitializer

Gibt Implementierungsanforderungen für XML-Textwriter an, die sich von dieser Schnittstelle ableiten. Specifies implementation requirements for XML text writers that derive from this interface.

Enumerationen

ConformanceLevel

Gibt den Umfang der Eingabe- oder Ausgabeüberprüfung an, die von dem XmlReader-Objekt und dem XmlWriter-Objekt ausgeführt wird. Specifies the amount of input or output checking that XmlReader and XmlWriter objects perform.

DtdProcessing

Gibt die Optionen für die DTD-Verarbeitung an. Die DtdProcessing-Enumeration wird von der XmlReaderSettings-Klasse verwendet.The DtdProcessing enumeration is used by the XmlReaderSettings class.

EntityHandling

Gibt an, wie der XmlTextReader oder XmlValidatingReader Entitäten behandelt. Specifies how the XmlTextReader or XmlValidatingReader handle entities.

Formatting

Gibt Formatierungsoptionen für den XmlTextWriter an. Specifies formatting options for the XmlTextWriter.

NamespaceHandling

Gibt an, ob doppelte Namespacedeklarationen im XmlWriter entfernt werden sollen. Specifies whether to remove duplicate namespace declarations in the XmlWriter.

NewLineHandling

Gibt an, wie Zeilenumbrüche behandelt werden sollen. Specifies how to handle line breaks.

ReadState

Gibt den Zustand des Readers an. Specifies the state of the reader.

ValidationType

Gibt die Art der durchzuführenden Validierung an. Specifies the type of validation to perform.

WhitespaceHandling

Gibt an, wie Leerraum behandelt wird. Specifies how white space is handled.

WriteState

Gibt den Zustand des XmlWriter an. Specifies the state of the XmlWriter.

XmlDateTimeSerializationMode

Gibt an, wie der Wert für die Uhrzeit beim Konvertieren zwischen einer Zeichenfolge und DateTime behandelt werden soll. Specifies how to treat the time value when converting between string and DateTime.

XmlDictionaryReaderQuotaTypes

Enthält konfigurierbare Kontingentwerte für XmlDictionaryReader. Enumerates the configurable quota values for XmlDictionaryReaders.

XmlNamespaceScope

Definiert den Gültigkeitsbereich des Namespace. Defines the namespace scope.

XmlNodeChangedAction

Gibt die Art der Knotenänderung an. Specifies the type of node change.

XmlNodeOrder

Beschreibt die Dokumentreihenfolge eines Knotens im Vergleich zu einem zweiten Knoten. Describes the document order of a node compared to a second node.

XmlNodeType

Gibt die Art des Knotens an. Specifies the type of node.

XmlOutputMethod

Gibt die Methode zum Serialisieren der XmlWriter-Ausgabe an. Specifies the method used to serialize the XmlWriter output.

XmlSpace

Gibt den aktuellen xml:space-Bereich an. Specifies the current xml:space scope.

XmlTokenizedType

Stellt den XML-Typ für die Zeichenfolge dar. Dies ermöglicht das Lesen der Zeichenfolge als bestimmten XML-Typ, z. B. als CDATA-Abschnittstyp.This allows the string to be read as a particular XML type, for example a CDATA section type.

Delegaten

OnXmlDictionaryReaderClose

delegate für eine Rückrufmethode beim Schließen des Readers. delegate for a callback method when closing the reader.

XmlNodeChangedEventHandler

Stellt die Methode dar, die das NodeChanged-Ereignis, das NodeChanging-Ereignis, das NodeInserted-Ereignis, das NodeInserting-Ereignis, das NodeRemoved-Ereignis und das NodeRemoving-Ereignis behandelt. Represents the method that handles NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

Hinweise

Unterstützten standardsSupported standards

Die System.Xml -Namespace unterstützt diese Standards:The System.Xml namespace supports these standards:

Finden Sie im Abschnitt Unterschiede zwischen der W3C-Spezifikationen für zwei Fälle, in der XML-Klassen, die von der W3C-Empfehlungen abweicht.See the section Differences from the W3C specs for two cases in which the XML classes differ from the W3C recommendations.

.NET Framework bietet auch andere Namespaces für Vorgänge im Zusammenhang mit XML.The .NET Framework also provides other namespaces for XML-related operations. Eine Liste, Beschreibungen und Links finden Sie unter den System.Xml-Namespaces Webseite.For a list, descriptions, and links, see the System.Xml Namespaces webpage.

Asynchrone Verarbeitung von XMLProcessing XML asynchronously

Die System.Xml.XmlReader und System.Xml.XmlWriter Klassen enthalten eine Reihe von asynchronen Methoden auf der Grundlage der.The System.Xml.XmlReader and System.Xml.XmlWriter classes include a number of asynchronous methods that are based on the . Diese Methoden können durch die Zeichenfolge "Async" am Ende des Namens identifiziert werden.These methods can be identified by the string "Async" at the end of their names. Klicken Sie mit diesen Methoden können Sie asynchronen Code schreiben, der synchrone Code ähnelt, und Sie können von vorhandenen synchronen Code leicht zu asynchronen Code migrieren.With these methods, you can write asynchronous code that's similar to your synchronous code, and you can migrate your existing synchronous code to asynchronous code easily.

  • Verwenden Sie die asynchronen Methoden in apps erheblicher Netzwerklatenz für Stream vorhanden ist.Use the asynchronous methods in apps where there is significant network stream latency. Vermeiden Sie mithilfe der asynchronen APIs für Arbeitsspeicherstream oder eine lokale Datei-Stream Lese-und Schreibvorgänge.Avoid using the asynchronous APIs for memory stream or local file stream read/write operations. Der Eingabestream XmlTextReader, und XmlTextWriter sollte auch asynchrone Vorgänge unterstützen.The input stream, XmlTextReader, and XmlTextWriter should support asynchronous operations as well. Andernfalls werden Threads weiterhin durch e/a-Vorgänge blockiert.Otherwise, threads will still be blocked by I/O operations.

  • Nicht empfohlen, das Kombinieren von synchronen und asynchronen Funktionsaufrufe, da Sie möglicherweise vergessen Sie verwenden die await -Schlüsselwort, oder Verwenden einer synchronen API, in dem asynchronen erforderlich ist.We don't recommend mixing synchronous and asynchronous function calls, because you might forget to use the await keyword or use a synchronous API where an asynchronous one is necessary.

  • Legen Sie nicht die XmlReaderSettings.Async oder XmlWriterSettings.Async flag true , wenn Sie nicht beabsichtigen, eine asynchrone Methode zu verwenden.Do not set the XmlReaderSettings.Async or XmlWriterSettings.Async flag to true if you don't intend to use an asynchronous method.

  • Wenn Sie vergessen, geben Sie die await -Schlüsselwort, wenn Sie eine asynchrone Methode aufrufen, die die Ergebnisse sind nicht deterministisch: erhalten Sie möglicherweise das Ergebnis erwartet oder eine Ausnahme.If you forget to specify the await keyword when you call an asynchronous method, the results are non-deterministic: You might receive the result you expected or an exception.

  • Wenn ein XmlReader Objekt liest einen großen Textknoten, möglicherweise nur einen partielle Textwert Zwischenspeichern und zurückgeben den Textknoten, also Abrufen der XmlReader.Value Eigenschaft durch einen e/a-Vorgang blockiert werden.When an XmlReader object is reading a large text node, it might cache only a partial text value and return the text node, so retrieving the XmlReader.Value property might be blocked by an I/O operation. Verwenden Sie die XmlReader.GetValueAsync Methode, um den Textwert im asynchronen Modus zu erhalten, oder verwenden Sie die XmlReader.ReadValueChunkAsync Methode, um eine große Text Lesen in Blöcken zu blockieren.Use the XmlReader.GetValueAsync method to get the text value in asynchronous mode, or use the XmlReader.ReadValueChunkAsync method to read a large text block in chunks.

  • Bei Verwendung einer XmlWriter Objekt, rufen Sie die XmlWriter.FlushAsync Methode vor dem Aufruf XmlWriter.Close einen e/a-Vorgang eine Blockierung zu vermeiden.When you use an XmlWriter object, call the XmlWriter.FlushAsync method before calling XmlWriter.Close to avoid blocking an I/O operation.

Unterschiede zwischen der W3C-SpezifikationenDifferences from the W3C specs

In beiden Fällen, bei denen Einschränkungen für Komponenten des modellgruppenschemas Modell, das System.Xml Namespace unterscheidet sich von den W3C-Empfehlungen.In two cases that involve constraints on model group schema components, the System.Xml namespace differs from the W3C recommendations.

Die Konsistenz in Deklarationen:Consistency in element declarations:

In einigen Fällen, wenn Ersetzungsgruppen verwendet werden die System.Xml Implementierung erfüllt nicht die "Schema Component Einschränkung: Element Declarations Consistent," Dies wird im beschrieben die Constraints on Model Group Schema Components Abschnitt der W3C-Spezifikation.In some cases, when substitution groups are used, the System.Xml implementation does not satisfy the "Schema Component Constraint: Element Declarations Consistent," which is described in the Constraints on Model Group Schema Components section of the W3C spec.

Z. B. das folgende Schema enthält Elemente, die den gleichen Namen haben, jedoch unterschiedliche Typen in der gleichen Inhaltsmodell und Ersetzungsgruppen verwendet werden.For example, the following schema includes elements that have the same name but different types in the same content model, and substitution groups are used. Dies sollte zu einem Fehler führen, System.Xml kompiliert und validiert das Schema jedoch ohne Fehler.This should cause an error, but System.Xml compiles and validates the schema without errors.

<?xml version="1.0" encoding="utf-8" ?>   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  

   <xs:element name="e1" type="t1"/>  
   <xs:complexType name="t1"/>  

   <xs:element name="e2" type="t2" substitutionGroup="e1"/>  
      <xs:complexType name="t2">  
         <xs:complexContent>  
            <xs:extension base="t1">  
         </xs:extension>  
      </xs:complexContent>  
   </xs:complexType>  

   <xs:complexType name="t3">  
      <xs:sequence>  
         <xs:element ref="e1"/>  
         <xs:element name="e2" type="xs:int"/>  
      </xs:sequence>  
   </xs:complexType>  
</xs:schema>  

In diesem Schema enthält der Typ t3 eine Sequenz von Elementen.In this schema, type t3 contains a sequence of elements. Aufgrund der Ersetzung kann der Verweis auf das Element e1 aus der Sequenz als Ergebnis entweder das Element e1 des Typs t1 oder das Element e2 des Typs t2 haben.Because of the substitution, the reference to element e1 from the sequence can result either in element e1 of type t1 or in element e2 of type t2. Letzteres führt zu einer Sequenz von zwei e2 Elemente, wobei eine vom Typ ist t2 und der andere Typ xs:int.The latter case would result in a sequence of two e2 elements, where one is of type t2 and the other is of type xs:int.

Eindeutige partikelzuordnung:Unique particle attribution:

Unter den folgenden Bedingungen die System.Xml Implementierung erfüllt nicht die "Schema Component Einschränkung: Unique Particle Attribution," wird in näher eingegangen, die Constraints on Model Group Schema Components Abschnitt der W3C-Spezifikation.Under the following conditions, the System.Xml implementation does not satisfy the "Schema Component Constraint: Unique Particle Attribution," which is described in the Constraints on Model Group Schema Components section of the W3C spec.

  • Eines der Elemente in der Gruppe verweist auf ein anderes Element.One of the elements in the group references another element.

  • Das Element, auf das verwiesen wird, ist ein Anfangselement einer Ersetzungsgruppe.The referenced element is a head element of a substitution group.

  • Der Ersetzungsgruppe enthält ein Element mit dem gleichen Namen wie eines der Elemente in der Gruppe.The substitution group contains an element that has the same name as one of the elements in the group.

  • Die Kardinalität des Elements, das das Substitution Group Head-Element und das Element mit demselben Namen verweist, wie ein Substitution Group-Element nicht festgelegt ist (MinOccurs < MaxOccurs).The cardinality of the element that references the substitution group head element and the element with the same name as a substitution group element is not fixed (minOccurs < maxOccurs).

  • Die Definition des Elements, das die Ersetzungsgruppe verweist, geht der Definition des Elements mit dem gleichen Namen wie ein Substitution Group-Element.The definition of the element that references the substitution group precedes the definition of the element with the same name as a substitution group element.

So ist das Inhaltsmodell im unten aufgeführten Schema nicht eindeutig und sollte zu einem Kompilierungsfehler führen; System.Xml kompiliert das Schema jedoch ohne Fehler.For example, in the schema below the content model is ambiguous and should cause a compilation error, but System.Xml compiles the schema without errors.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  

  <xs:element name="e1" type="xs:int"/>  
  <xs:element name="e2" type="xs:int" substitutionGroup="e1"/>  

  <xs:complexType name="t3">  
    <xs:sequence>  
      <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
      <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
    </xs:sequence>  
  </xs:complexType>  

  <xs:element name="e3" type="t3"/>  
</xs:schema>  

Wenn Sie versuchen, den folgenden XML-Code anhand der oben aufgeführten Schemas zu überprüfen, die Validierung mit der folgenden Meldung fehl: "das Element 'e3' hat ein ungültiges untergeordnetes Element 'e2'." und ein XmlSchemaValidationException Ausnahme ausgelöst.If you try to validate the following XML against the schema above, the validation will fail with the following message: "The element 'e3' has invalid child element 'e2'." and an XmlSchemaValidationException exception will be thrown.

<e3>  
  <e2>1</e2>  
  <e2>2</e2>  
</e3>  

Um dieses Problem zu umgehen, können Sie die Elementdeklarationen im XSD-Dokument austauschen.To work around this problem, you can swap element declarations in the XSD document. Zum Beispiel:For example:

<xs:sequence>  
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
</xs:sequence>  

zubecomes this:

<xs:sequence>  
  <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
  <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
</xs:sequence>  

Hier ist ein weiteres Beispiel für das gleiche Problem aus:Here's another example of the same issue:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  
   <xs:element name="e1" type="xs:string"/>  
   <xs:element name="e2" type="xs:string" substitutionGroup="e1"/>  

   <xs:complexType name="t3">  
      <xs:sequence>  
         <xs:element ref="e1" minOccurs="0" maxOccurs="1"/>  
         <xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>  
      </xs:sequence>  
   </xs:complexType>  
   <xs:element name="e3" type="t3"/>  
</xs:schema>  

Wenn Sie versuchen, den folgenden XML-Code anhand der oben aufgeführten Schemas zu überprüfen, die Validierung mit der folgenden Ausnahme fehl: "Unbehandelte Ausnahme: System.Xml.Schema.XmlSchemaValidationException: das el-Element 'e2' ist ungültig: der Wert 'Abc' ist ungültig. gemäß seinem Datentyp "http://www.w3.org/2001/XMLSchema:int'-die Zeichenfolge 'Abc' ist kein gültiger Int32-Wert."If you try to validate the following XML against the schema above, the validation will fail with the following exception: "Unhandled Exception: System.Xml.Schema.XmlSchemaValidationException: The 'e2' el element is invalid - The value 'abc' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:int' - The string 'abc' is not a valid Int32 value."

<e3><e2>abc</e2></e3>  

SicherheitsüberlegungenSecurity considerations

Die Typen und Member in der System.Xml Namespace basieren auf der Sicherheitssystem von .NET.The types and members in the System.Xml namespace rely on the .NET security system. Den folgenden Abschnitten werden die Sicherheitsprobleme, die für XML-Technologien spezifisch sind.The following sections discuss security issues that are specific to XML technologies.

Beachten Sie, dass bei der Verwendung der System.Xml Typen und Member, wenn der XML-Code Daten enthält, die potenziellen Auswirkungen auf die Datenschutz hat, müssen Sie Ihre app auf eine Weise zu implementieren, die Ihre Endbenutzer Datenschutz berücksichtigt.Also note that when you use the System.Xml types and members, if the XML contains data that has potential privacy implications, you need to implement your app in a way that respects your end users' privacy.

Externer ZugriffExternal access

Einige XML-Technologien können bei der Verarbeitung andere Dokumente abrufen.Several XML technologies have the ability to retrieve other documents during processing. In dem gerade analysierten Dokument kann sich z. B. eine DTD (Document Type Definition) befinden.For example, a document type definition (DTD) can reside in the document being parsed. Die DTD kann sich auch in einem externen Dokument befinden, auf das in dem gerade analysierten Dokument verwiesen wird.The DTD can also live in an external document that is referenced by the document being parsed. Die XSD- und XSLT-Technologien können auch Informationen aus anderen Dateien verwenden.The XML Schema definition language (XSD) and XSLT technologies also have the ability to include information from other files. Diese externen Ressourcen können ein Sicherheitsproblem darstellen.These external resources can present some security concerns. Beispielsweise sollten Sie sicherstellen, dass Ihre app Dateien nur von vertrauenswürdigen Websites abgerufen, und, dass die Datei, die es abruft, nicht schädliche Daten enthalten.For example, you'll want to ensure that your app retrieves files only from trusted sites, and that the file it retrieves doesn't contain malicious data.

Die XmlUrlResolver Klasse dient zum Laden von XML-Dokumenten und zum Auflösen von externer Ressourcen wie Entitäten, DTDs oder Schemata und Direktiven importiert oder eingefügt.The XmlUrlResolver class is used to load XML documents and to resolve external resources such as entities, DTDs, or schemas, and import or include directives.

Sie können diese Klasse überschreiben und Angeben der XmlResolver Objekt, das verwendet.You can override this class and specify the XmlResolver object to use. Verwenden Sie die XmlSecureResolver-Klasse, wenn Sie eine Ressource öffnen möchten, die nicht von Ihnen gesteuert wird oder die nicht vertrauenswürdig ist.Use the XmlSecureResolver class if you need to open a resource that you do not control, or that is untrusted. Der XmlSecureResolver umschließt einen XmlResolver und ermöglicht das Einschränken der Ressourcen, auf die der zu Grunde liegende XmlResolver Zugriff hat.The XmlSecureResolver wraps an XmlResolver and allows you to restrict the resources that the underlying XmlResolver has access to.

Einen Denial of serviceDenial of service

Die folgenden Szenarios gelten als weniger empfindlich für Denial-of-Service-Angriffe, da die System.Xml-Klassen Schutz vor diesen Angriffen bieten.The following scenarios are considered to be less vulnerable to denial of service attacks because the System.Xml classes provide a means of protection from such attacks.

  • Analysieren von XML-Textdaten.Parsing text XML data.

  • Analysieren von binären XML-Daten, wenn die binären XML-Daten von Microsoft SQL Server generiert wurde.Parsing binary XML data if the binary XML data was generated by Microsoft SQL Server.

  • Schreiben von XML-Dokumenten und -Fragmenten aus Datenquellen in ein Dateisystem, einen Stream, einen TextWriter oder einen StringBuilder.Writing XML documents and fragments from data sources to the file system, streams, a TextWriter, or a StringBuilder.

  • Laden von Dokumenten in das DOM-Objekt (Document Object Model), wenn ein XmlReader-Objekt verwendet wird und XmlReaderSettings.DtdProcessing auf DtdProcessing.Prohibit festgelegt ist.Loading documents into the Document Object Model (DOM) object if you are using an XmlReader object and XmlReaderSettings.DtdProcessing set to DtdProcessing.Prohibit.

  • Navigieren im DOM-Objekt.Navigating the DOM object.

Die folgenden Szenarios sind nicht zu empfehlen, wenn Sie Denial-of-Service-Angriffe befürchten oder wenn Sie in einer nicht vertrauenswürdigen Umgebung arbeiten.The following scenarios are not recommended if you are concerned about denial of service attacks, or if you are working in an untrusted environment.

  • DTD-Verarbeitung.DTD processing.

  • Schema-Verarbeitung.Schema processing. Dazu gehört das Hinzufügen eines nicht vertrauenswürdigen Schemas zur Schemaauflistung, das Kompilieren eines nicht vertrauenswürdigen Schemas und das Validieren mit einem nicht vertrauenswürdigen Schema.This includes adding an untrusted schema to the schema collection, compiling an untrusted schema, and validating by using an untrusted schema.

  • XSLT-Verarbeitung.XSLT processing.

  • Analysieren eines beliebigen Streams von binären XML-Daten eines BenutzersParsing any arbitrary stream of user supplied binary XML data.

  • DOM-Operationen wie Abfragen, Bearbeiten, Verschieben von Unterstrukturen zwischen Dokumenten und Speichern von DOM-Objekten.DOM operations such as querying, editing, moving sub-trees between documents, and saving DOM objects.

Aktivieren Sie Wenn Sie DOS-Probleme befürchten oder wenn Sie mit nicht vertrauenswürdigen Quellen arbeiten, die DTD-Verarbeitung nicht.If you are concerned about denial of service issues or if you are dealing with untrusted sources, do not enable DTD processing. Dies ist standardmäßig deaktiviert, auf XmlReader Objekte, die XmlReader.Create -Methode erstellt.This is disabled by default on XmlReader objects that the XmlReader.Create method creates.

Hinweis

Beim XmlTextReader ist die DTD-Verarbeitung standardmäßig aktiviert.The XmlTextReader allows DTD processing by default. Diese Funktion kann mit der XmlTextReader.DtdProcessing-Eigenschaft deaktiviert werden.Use the XmlTextReader.DtdProcessing property to disable this feature.

Wenn Sie die DTD-Verarbeitung aktiviert haben, können Sie die XmlSecureResolver Klasse, um die Ressourcen zu beschränken, die die XmlReader zugreifen können.If you have DTD processing enabled, you can use the XmlSecureResolver class to restrict the resources that the XmlReader can access. Sie können auch Ihre app entwerfen, sodass die XML-Verarbeitung bezüglich Arbeitsspeicher und Zeit eingeschränkt.You can also design your app so that the XML processing is memory and time constrained. Beispielsweise können Sie die Timeout-Einschränkungen in Ihrer ASP.NET-App konfigurieren.For example, you can configure timeout limits in your ASP.NET app.

Überlegungen zur VerarbeitungProcessing considerations

Da XML-Dokumente Verweise auf andere Dateien enthalten können, ist es schwierig, den für die Analyse eines XML-Dokuments erforderlichen Verarbeitungsaufwand zu ermitteln.Because XML documents can include references to other files, it is difficult to determine how much processing power is required to parse an XML document. XML-Dokumente können z B. eine DTD enthalten.For example, XML documents can include a DTD. Wenn die DTD verschachtelte Entitäten oder komplexe Inhaltsmodelle umfasst, kann die Analyse des Dokuments außerordentlich viel Zeit beanspruchen.If the DTD contains nested entities or complex content models, it could take an excessive amount of time to parse the document.

Bei der Verwendung von XmlReader können Sie die Größe des zu analysierenden Dokuments mit der XmlReaderSettings.MaxCharactersInDocument-Eigenschaft begrenzen.When using XmlReader, you can limit the size of the document that can be parsed by setting the XmlReaderSettings.MaxCharactersInDocument property. Sie können die Anzahl von Zeichen einschränken, die sich durch das Erweitern von Entitäten ergeben, indem Sie die XmlReaderSettings.MaxCharactersFromEntities-Eigenschaft einrichten.You can limit the number of characters that result from expanding entities by setting the XmlReaderSettings.MaxCharactersFromEntities property. Beispiele für das Einrichten dieser Eigenschaften finden Sie in den entsprechenden Referenzthemen.See the appropriate reference topics for examples of setting these properties.

Die XSD- und die XSLT-Technologien weisen weitere Funktionen auf, die die Verarbeitungsgeschwindigkeit beeinflussen können.The XSD and XSLT technologies have additional capabilities that can affect processing performance. Es ist z. B. möglich, ein XML-Schema zu erstellen, dessen Verarbeitung bereits bei der Auswertung für ein relativ kleines Dokument erhebliche Zeit in Anspruch nimmt.For example, it is possible to construct an XML schema that requires a substantial amount of time to process when evaluated over a relatively small document. Es ist auch möglich, in einen XSLT-Stylesheet Skriptblöcke einzubetten.It is also possible to embed script blocks within an XSLT style sheet. Beides stellt ein potenzielles Sicherheitsrisiko dar, zu Ihrer app.Both cases pose a potential security threat to your app.

Beim Erstellen einer app, verwendet der XslCompiledTransform Klasse, Sie sollten die folgenden Elemente und deren Bedeutung kennen:When creating an app that uses the XslCompiledTransform class, you should be aware of the following items and their implications:

  • Die XSLT-Skriptverarbeitung ist standardmäßig deaktiviert.XSLT scripting is disabled by default. XSLT-Skripts sollten nur aktiviert werden, wenn eine Skriptunterstützung erforderlich ist und Sie mit einer vollständig vertrauenswürdigen Umgebung arbeiten.XSLT scripting should be enabled only if you require script support and you are working in a fully trusted environment.

  • Die XSLT-document()-Funktion ist standardmäßig deaktiviert.The XSLT document() function is disabled by default. Wenn Sie die document()-Funktion aktivieren, schränken Sie die verfügbaren Ressourcen ein, indem Sie der XmlSecureResolver-Methode ein XslCompiledTransform.Transform-Objekt übergeben.If you enable the document() function, restrict the resources that can be accessed by passing an XmlSecureResolver object to the XslCompiledTransform.Transform method.

  • Erweiterungsobjekte sind standardmäßig aktiviert.Extension objects are enabled by default. Wenn der XsltArgumentList-Methode ein XslCompiledTransform.Transform-Objekt übergeben wird, das Erweiterungsobjekte enthält, so werden diese verwendet.If an XsltArgumentList object that contains extension objects is passed to the XslCompiledTransform.Transform method, the extension objects are used.

  • XSLT-Stylesheets können Verweise auf andere Dateien und eingebettete Skriptblöcke enthalten.XSLT style sheets can include references to other files and embedded script blocks. Ein böswilliger Benutzer kann dies ausnutzen, indem er Daten oder Stylesheets bereitstellt, deren Verarbeitung die Ressourcen des Computers erschöpft.A malicious user can exploit this by supplying you with data or style sheets that, when executed, can cause your system to process until the computer runs low on resources.

  • XSLT-apps, die in einer teilweise vertrauenswürdigen Umgebung ausgeführt, können im Stylesheet-Spoofing ausgesetzt führen.XSLT apps that run in a mixed trust environment can result in style sheet spoofing. Ein böswilliger Benutzer könnte z. B. ein Objekt mit einem schädlichen Stylesheet laden und es an einen anderen Benutzer übermitteln, der die XslCompiledTransform.Transform-Methode aufruft und die Transformation ausführt.For example, a malicious user can load an object with a harmful style sheet and hand it off to another user who subsequently calls the XslCompiledTransform.Transform method and executes the transformation.

Diese Sicherheitsprobleme können durch Deaktivieren von Skripts oder der document()-Funktion bei aus nicht vertrauenswürdigen Quellen stammenden Stylesheets und durch das Abweisen von XslCompiledTransform-Objekten, XSLT-Stylesheets und XML-Quelldaten aus nicht vertrauernswürdigen Quellen reduziert werden.These security issues can be mitigated by not enabling scripting or the document() function unless the style sheet comes from a trusted source, and by not accepting XslCompiledTransform objects, XSLT style sheets, or XML source data from an untrusted source.

AusnahmebehandlungException handling

Ausnahmen, die von Komponenten auf niedrigerer Ebene offen legen können Pfadinformationen, die Sie nicht möchten für die app verfügbar gemacht.Exceptions thrown by lower level components can disclose path information that you do not want exposed to the app. Ihre apps müssen Ausnahmen abfangen und diese entsprechend verarbeiten.Your apps must catch exceptions and process them appropriately.