System.Xml Namespace

Stellt standardisierte Unterstützung für die XML-Verarbeitung bereit. 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 kompaktes 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

Stellt Erweiterungs Methoden für XmlDocument und XmlNode für die Dokument Navigation bereit.Provides extension methods for the XmlDocument and XmlNode for document navigation.

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-ObjektenDefines the context for a set of XmlDocument objects.

XmlLinkedNode

Ruft den Knoten ab, der diesem Knoten unmittelbar vorausgeht oder auf ihn 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 Funktionen 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 und der Zugriff auf die Ressourcen beschränkt wird, auf die der zugrunde liegende XmlResolver zugreifen kann.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 Funktionen 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

Stellt den schreibgeschützten Zugriff auf eine Gruppe von Präfix- und Namespacezuordnungen bereit.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.Specifies the options for processing DTDs. 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 den Typ der Knotenänderung an.Specifies the type of node change.

XmlNodeOrder

Beschreibt die Dokumentreihenfolge eines Knotens im Vergleich zu einem anderen 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.Represents the XML type for the string. 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ützte StandardsSupported standards

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

Weitere Informationen finden Sie im Abschnitt Unterschiede zu den W3C-Spezifikationen für zwei Fälle, in denen sich die XML-Klassen von den W3C-Empfehlungen unterscheiden.See the section Differences from the W3C specs for two cases in which the XML classes differ from the W3C recommendations.

.Net bietet auch andere Namespaces für XML-bezogene Vorgänge..NET also provides other namespaces for XML-related operations. Eine Liste, Beschreibungen und Links finden Sie unter System.Xml-Namespaces.For a list, descriptions, and links, see System.Xml Namespaces.

Asynchrones verarbeiten von XMLProcessing XML asynchronously

Die System.Xml.XmlReader System.Xml.XmlWriter Klassen und enthalten eine Reihe von asynchronen Methoden, die auf dem asynchronen Programmiermodell basieren.The System.Xml.XmlReader and System.Xml.XmlWriter classes include a number of asynchronous methods that are based on the asynchronous programming model. Diese Methoden können durch die Zeichenfolge "Async" am Ende Ihres Namens identifiziert werden.These methods can be identified by the string "Async" at the end of their names. Mit diesen Methoden können Sie asynchronen Code schreiben, der dem synchronen Code ähnelt, und Sie können Ihren vorhandenen synchronen Code problemlos zu asynchronem 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, bei denen eine beträchtliche Netzwerkdaten Strom Latenz vorliegt.Use the asynchronous methods in apps where there is significant network stream latency. Vermeiden Sie die Verwendung der asynchronen APIs für den Speicherstream oder Lese-/Schreibvorgänge im lokalen Datei Datenstrom.Avoid using the asynchronous APIs for memory stream or local file stream read/write operations. Der Eingabestream, XmlTextReader , und XmlTextWriter sollte ebenfalls 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.

  • Es wird nicht empfohlen, synchrone und asynchrone Funktionsaufrufe zu mischen, da Sie möglicherweise vergessen, das await Schlüsselwort zu verwenden oder eine synchrone API zu verwenden, bei der eine asynchrone API 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 das- XmlReaderSettings.Async Flag oder das- XmlWriterSettings.Async Flag nicht auf fest, 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, das- await Schlüsselwort anzugeben, wenn Sie eine asynchrone Methode aufgerufen haben, sind die Ergebnisse nicht deterministisch: Sie können das erwartete Ergebnis oder eine Ausnahme erhalten.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 einen großen Textknoten liest, kann er nur einen partiellen Textwert Zwischenspeichern und den Textknoten zurückgeben, sodass das Abrufen der XmlReader.Value Eigenschaft durch einen e/a-Vorgang blockiert werden kann.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 einen großen TextBlock in Blöcken zu lesen.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.

  • Wenn Sie ein XmlWriter Objekt verwenden, rufen Sie die- XmlWriter.FlushAsync Methode vor, XmlWriter.Close um zu verhindern, dass ein e/a-Vorgang blockiert wird.When you use an XmlWriter object, call the XmlWriter.FlushAsync method before calling XmlWriter.Close to avoid blocking an I/O operation.

Unterschiede zu den W3C-SpezifikationenDifferences from the W3C specs

In zwei Fällen, in denen Einschränkungen für Modellgruppen-Schema Komponenten einbezogen werden, unterscheidet sich der- System.Xml Namespace von den W3C-Empfehlungen.In two cases that involve constraints on model group schema components, the System.Xml namespace differs from the W3C recommendations.

Konsistenz in Element Deklarationen:Consistency in element declarations:

In einigen Fällen, in denen Ersetzungs Gruppen verwendet werden, System.Xml erfüllt die Implementierung nicht die "Schema Komponenten Einschränkung: Element Deklarationen konsistent", die im Abschnitt Einschränkungen für Modellgruppen Schema Komponenten der W3C-Spezifikation beschrieben wird.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.

Das folgende Schema enthält z. b. Elemente mit dem gleichen Namen, aber unterschiedlichen Typen im gleichen Inhalts Modell, und es werden Ersetzungs Gruppen verwendet.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. Der letztere Fall würde zu einer Sequenz von zwei e2 Elementen führen, wobei eine der Typen vom Typ t2 und der andere vom Typ ist 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 Partikel Zuordnung:Unique particle attribution:

Unter den folgenden Bedingungen erfüllt die- System.Xml Implementierung nicht die "Schema Komponenten Einschränkung: eindeutige Partikel Zuordnung", die im Abschnitt " Einschränkungen für Modellgruppen-Schema Komponenten " der W3C-Spezifikation beschrieben wird.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.

  • Die Ersetzungs Gruppe 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 auf das Ersetzungs Gruppen-Head-Element verweist, und das Element mit dem gleichen Namen wie ein Ersetzungs Gruppenelement sind nicht fest (minvorkommen < maxvorkommen).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 auf die Ersetzungs Gruppe verweist, geht vor der Definition des Elements mit dem gleichen Namen wie ein Ersetzungs Gruppenelement.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 des obigen Schemas zu validieren, schlägt die Validierung mit der folgenden Meldung fehl: "das Element ' E3 ' weist ein ungültiges untergeordnetes Element ' E2 ' auf." eine XmlSchemaValidationException Ausnahme wird 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 Element Deklarationen im XSD-Dokument austauschen.To work around this problem, you can swap element declarations in the XSD document. 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>

Im folgenden finden Sie ein weiteres Beispiel für das gleiche Problem: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 des obigen Schemas zu validieren, schlägt die Validierung mit folgender Ausnahme fehl: "Ausnahme Fehler: System.Xml.Schema.Xmlschemavalidationexception: das El-Element" E2 "ist ungültig. der Wert" ABC "ist gemäß seinem Datentyp ungültig '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>

SicherheitshinweiseSecurity considerations

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

Beachten Sie auch Folgendes: Wenn Sie die System.Xml Typen und Member verwenden und die XML-Daten Daten mit möglichen Auswirkungen auf den Datenschutz enthalten, müssen Sie Ihre APP so implementieren, dass Sie den Datenschutz Ihrer Endbenutzer respektiert.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 einige Sicherheitsbedenken darstellen.These external resources can present some security concerns. Sie möchten z. b. sicherstellen, dass Ihre APP Dateien nur von vertrauenswürdigen Sites abruft und dass die Datei, die Sie abruft, keine schädlichen Daten enthält.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 wird zum Laden von XML-Dokumenten und zum Auflösen externer Ressourcen wie Entitäten, DTDs oder Schemas sowie zum Importieren oder einschließen von-Anweisungen verwendet.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 das XmlResolver zu verwendende Objekt angeben.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.

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.

  • Das Auswerten von binären XML-Daten, wenn die binären XML-Daten von Microsoft SQL Server generiert wurden.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.

Wenn Sie Probleme mit Denial-of-Service-Problemen haben oder wenn Sie mit nicht vertrauenswürdigen Quellen arbeiten, sollten Sie die DTD-Verarbeitung nicht aktivieren.If you are concerned about denial of service issues or if you are dealing with untrusted sources, do not enable DTD processing. Dies ist für XmlReader Objekte, die von der-Methode erstellt werden, standardmäßig deaktiviert XmlReader.Create .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 die DTD-Verarbeitung aktiviert ist, können Sie die-Klasse verwenden, XmlSecureResolver um die Ressourcen einzuschränken, auf die der XmlReader zugreifen kann.If you have DTD processing enabled, you can use the XmlSecureResolver class to restrict the resources that the XmlReader can access. Sie können Ihre APP auch so entwerfen, dass die XML-Verarbeitung Speicher und Zeit eingeschränkt ist.You can also design your app so that the XML processing is memory and time constrained. Beispielsweise können Sie Timeout Limits 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. Beide Fälle stellen eine potenzielle Sicherheitsbedrohung für Ihre APP dar.Both cases pose a potential security threat to your app.

Wenn Sie eine APP erstellen, die die XslCompiledTransform -Klasse verwendet, sollten Sie die folgenden Elemente und deren Auswirkungen beachten: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 gemischten Vertrauensstellungs Umgebung ausgeführt werden, können zu Stylesheet-Spoofing 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 ausgelöst werden, können Pfadinformationen offenlegen, die nicht für die app verfügbar gemacht werden sollen.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 entsprechend verarbeiten.Your apps must catch exceptions and process them appropriately.

Weitere Informationen