System.Xml Obor názvů

Poskytuje podporu pro zpracování XML na základě standardů. Provides standards-based support for processing XML.

Třídy

NameTable

Implementuje jeden podproces XmlNameTable .Implements a single-threaded XmlNameTable.

UniqueId

Jedinečný identifikátor optimalizovaný pro identifikátory GUID.A unique identifier optimized for Guids.

XmlAttribute

Představuje atribut.Represents an attribute. Platné a výchozí hodnoty pro atribut jsou definovány v definici typu dokumentu (DTD) nebo schématu.Valid and default values for the attribute are defined in a document type definition (DTD) or schema.

XmlAttributeCollection

Představuje kolekci atributů, které mohou být k dispozici v názvu nebo indexu.Represents a collection of attributes that can be accessed by name or index.

XmlBinaryReaderSession

Povoluje, aby byly optimalizované řetězce spravovány dynamickým způsobem.Enables optimized strings to be managed in a dynamic way.

XmlBinaryWriterSession

Umožňuje použití dynamického slovníku pro komprimaci běžných řetězců, které se zobrazí ve zprávě a udržují stav.Enables using a dynamic dictionary to compress common strings that appear in a message and maintain state.

XmlCDataSection

Představuje oddíl CDATA.Represents a CDATA section.

XmlCharacterData

Poskytuje metody manipulace s textem, které jsou používány několika třídami.Provides text manipulation methods that are used by several classes.

XmlComment

Představuje obsah komentáře XML.Represents the content of an XML comment.

XmlConvert

Kóduje a dekóduje názvy XML a poskytuje metody pro převod mezi typy modulu CLR (Common Language Runtime) a typy XSD (Schema Definition Language) schématu XML (XSD).Encodes and decodes XML names, and provides methods for converting between common language runtime types and XML Schema definition language (XSD) types. Při převodu datových typů jsou vracené hodnoty nezávislé na národním prostředí.When converting data types, the values returned are locale-independent.

XmlDataDocument

Umožňuje ukládat, načítat a manipulovat s strukturovanými daty prostřednictvím relačních dat DataSet .Allows structured data to be stored, retrieved, and manipulated through a relational DataSet.

XmlDeclaration

Představuje uzel deklarace XML < ? verze XML = ' 1.0 '...? > .Represents the XML declaration node <?xml version='1.0'...?>.

XmlDictionary

Implementuje slovník používaný k optimalizaci implementací čtecího modulu nebo zapisovače XML služby Windows Communication Foundation (WCF).Implements a dictionary used to optimize Windows Communication Foundation (WCF)'s XML reader/writer implementations.

XmlDictionaryReader

abstractTřída, ze které Windows Communication Foundation (WCF) odvodí XmlReader do serializace a deserializace.An abstract class that the Windows Communication Foundation (WCF) derives from XmlReader to do serialization and deserialization.

XmlDictionaryReaderQuotas

Obsahuje konfigurovatelné hodnoty kvót pro XmlDictionaryReaders.Contains configurable quota values for XmlDictionaryReaders.

XmlDictionaryString

Představuje položku uloženou v XmlDictionary .Represents an entry stored in a XmlDictionary.

XmlDictionaryWriter

Představuje abstraktní třídu, kterou Windows Communication Foundation (WCF) odvodí XmlWriter do serializace a deserializace.Represents an abstract class that Windows Communication Foundation (WCF) derives from XmlWriter to do serialization and deserialization.

XmlDocument

Představuje dokument XML.Represents an XML document. Tuto třídu můžete použít k načtení, ověření, úpravám, přidání a umístění XML v dokumentu.You can use this class to load, validate, edit, add, and position XML in a document.

XmlDocumentFragment

Představuje odlehčený objekt, který je užitečný pro operace vložení stromu.Represents a lightweight object that is useful for tree insert operations.

XmlDocumentType

Představuje deklaraci typu dokumentu.Represents the document type declaration.

XmlDocumentXPathExtensions

Poskytuje metody rozšíření pro XmlDocument navigaci v XmlNode dokumentu a.Provides extension methods for the XmlDocument and XmlNode for document navigation.

XmlElement

Představuje element.Represents an element.

XmlEntity

Představuje deklaraci entity, například < ! ENTITA... > .Represents an entity declaration, such as <!ENTITY... >.

XmlEntityReference

Představuje uzel odkazu na entitu.Represents an entity reference node.

XmlException

Vrátí podrobné informace o poslední výjimce.Returns detailed information about the last exception.

XmlImplementation

Definuje kontext pro sadu XmlDocument objektů.Defines the context for a set of XmlDocument objects.

XmlLinkedNode

Získá uzel hned pod nebo za tímto uzlem.Gets the node immediately preceding or following this node.

XmlNamedNodeMap

Představuje kolekci uzlů, ke kterým lze přistupovat podle názvu nebo indexu.Represents a collection of nodes that can be accessed by name or index.

XmlNamespaceManager

Vyřeší, přidává a odebírá obory názvů do kolekce a poskytuje správu oboru pro tyto obory názvů.Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.

XmlNameTable

Tabulka objektů řetězců Atom.Table of atomized string objects.

XmlNode

Představuje jeden uzel v dokumentu XML.Represents a single node in the XML document.

XmlNodeChangedEventArgs

Poskytuje data pro NodeChanged události, NodeChanging , NodeInserted , NodeInserting NodeRemoved a NodeRemoving .Provides data for the NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

XmlNodeList

Představuje uspořádanou kolekci uzlů.Represents an ordered collection of nodes.

XmlNodeReader

Představuje čtecí modul, který poskytuje rychlý a neuložený v mezipaměti, jenom přístup k datům XML v XmlNode .Represents a reader that provides fast, non-cached forward only access to XML data in an XmlNode.

XmlNotation

Představuje deklaraci Notation, jako je například < ! ZÁPIS... > .Represents a notation declaration, such as <!NOTATION... >.

XmlParserContext

Poskytuje všechny kontextové informace vyžadované při XmlReader analýze fragmentu XML.Provides all the context information required by the XmlReader to parse an XML fragment.

XmlProcessingInstruction

Představuje instrukci zpracování, který XML definuje pro uchování informací specifických pro procesor v textu dokumentu.Represents a processing instruction, which XML defines to keep processor-specific information in the text of the document.

XmlQualifiedName

Představuje kvalifikovaný název XML.Represents an XML qualified name.

XmlReader

Představuje čtecí modul, který poskytuje rychlý, mezipaměti a přístup pouze k datům XML.Represents a reader that provides fast, noncached, forward-only access to XML data.

XmlReaderSettings

Určuje sadu funkcí pro podporu XmlReader objektu vytvořeného Create metodou.Specifies a set of features to support on the XmlReader object created by the Create method.

XmlResolver

Přeloží externí prostředky XML pojmenované identifikátorem URI (Uniform Resource Identifier).Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlSecureResolver

Pomáhá zabezpečit další implementaci XmlResolver pomocí zabalení XmlResolver objektu a omezení prostředků, XmlResolver ke kterým má přístup základní.Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

XmlSignificantWhitespace

Představuje prázdné místo mezi značkami v uzlu smíšeného obsahu nebo prázdným znakem v oboru XML: space = ' preserve '.Represents white space between markup in a mixed content node or white space within an xml:space= 'preserve' scope. To se také označuje jako významné prázdné znaky.This is also referred to as significant white space.

XmlText

Představuje textový obsah elementu nebo atributu.Represents the text content of an element or attribute.

XmlTextReader

Představuje čtecí modul, který poskytuje rychlý, neuložený obsah do mezipaměti a přístup k datům XML jenom pro čtení.Represents a reader that provides fast, non-cached, forward-only access to XML data.

Počínaje .NET Framework 2,0 doporučujeme XmlReader místo toho použít třídu.Starting with the .NET Framework 2.0, we recommend that you use the XmlReader class instead.

XmlTextWriter

Představuje zapisovač, který poskytuje rychlý, neuložený v mezipaměti, jenom pro vytváření datových proudů nebo souborů obsahujících data XML, která odpovídají jazyk XML (eXtensible Markup Language) W3C (XML) 1,0 a obory názvů v doporučeních XML.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.

Počínaje .NET Framework 2,0 doporučujeme XmlWriter místo toho použít třídu.Starting with the .NET Framework 2.0, we recommend that you use the XmlWriter class instead.

XmlUrlResolver

Přeloží externí prostředky XML pojmenované identifikátorem URI (Uniform Resource Identifier).Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlValidatingReader

Představuje čtecí modul, který poskytuje definici typu dokumentu (DTD), schéma s omezením formátu XML (XDR) a ověřování jazyka XSD (XML Schema Definition Language).Represents a reader that provides document type definition (DTD), XML-Data Reduced (XDR) schema, and XML Schema definition language (XSD) validation.

Tato třída je zastaralá.This class is obsolete. Počínaje .NET Framework 2,0, doporučujeme použít XmlReaderSettings třídu a Create metodu pro vytvoření ověřování XML Reader.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

Představuje prázdné místo v obsahu elementu.Represents white space in element content.

XmlWriter

Představuje zapisovač, který poskytuje rychlý, neuložený obsah do mezipaměti, pouze pro vytváření datových proudů nebo souborů obsahujících data XML.Represents a writer that provides a fast, non-cached, forward-only way to generate streams or files that contain XML data.

XmlWriterSettings

Určuje sadu funkcí pro podporu XmlWriter objektu vytvořeného Create metodou.Specifies a set of features to support on the XmlWriter object created by the Create method.

XmlXapResolver

Typ XmlXapResolver slouží k překladu prostředků v balíčku XAP aplikace Silverlight.The XmlXapResolver type is used to resolve resources in the Silverlight application's XAP package.

Rozhraní

IApplicationResourceStreamResolver

Představuje překladač datového proudu prostředku aplikace.Represents an application resource stream resolver.

IFragmentCapableXmlDictionaryWriter

Obsahuje vlastnosti a metody, které jsou-li implementovány pomocí XmlDictionaryWriter , umožňuje zpracování fragmentů XML.Contains properties and methods that when implemented by a XmlDictionaryWriter, allows processing of XML fragments.

IHasXmlNode

Umožňuje třídě vracet XmlNode z aktuálního kontextu nebo pozice.Enables a class to return an XmlNode from the current context or position.

IStreamProvider

Představuje rozhraní, které lze implementovat třídami, které poskytují proudy.Represents an interface that can be implemented by classes providing streams.

IXmlBinaryReaderInitializer

Poskytuje metody pro nové inicializaci binárního čtecího modulu pro čtení nového dokumentu.Provides methods for reinitializing a binary reader to read a new document.

IXmlBinaryWriterInitializer

Určuje požadavky implementace pro binární zapisovače XML, které jsou odvozeny z tohoto rozhraní.Specifies implementation requirements for XML binary writers that derive from this interface.

IXmlDictionary

interfaceKterý definuje kontrakt, který musí implementovat slovník XML pro použití v XmlDictionaryReader XmlDictionaryWriter implementacích a.An interface that defines the contract that an Xml dictionary must implement to be used by XmlDictionaryReader and XmlDictionaryWriter implementations.

IXmlLineInfo

Poskytuje rozhraní, které umožňuje třídě vracet informace o čáře a pozici.Provides an interface to enable a class to return line and position information.

IXmlMtomReaderInitializer

Určuje požadavky na implementaci pro čtečky XML MTOM odvozené z tohoto rozhraní.Specifies implementation requirements for XML MTOM readers that derive from this interface.

IXmlMtomWriterInitializer

Při implementaci zapisovače MTOM toto rozhraní zajišťuje inicializaci zapisovače MTOM.When implemented by an MTOM writer, this interface ensures initialization for an MTOM writer.

IXmlNamespaceResolver

Poskytuje přístup jen pro čtení k sadě předpon a mapování oboru názvů.Provides read-only access to a set of prefix and namespace mappings.

IXmlTextReaderInitializer

Určuje požadavky na implementaci pro čtečky textu XML, které jsou odvozeny z tohoto rozhraní.Specifies implementation requirements for XML text readers that derive from this interface.

IXmlTextWriterInitializer

Určuje požadavky na implementaci pro zapisovače textu XML, které jsou odvozeny z tohoto rozhraní.Specifies implementation requirements for XML text writers that derive from this interface.

Výčty

ConformanceLevel

Určuje množství kontroly vstupu a výstupu, které XmlReader XmlWriter provádí objekty.Specifies the amount of input or output checking that XmlReader and XmlWriter objects perform.

DtdProcessing

Určuje možnosti pro zpracování definicí DTD.Specifies the options for processing DTDs. DtdProcessingVýčet je používán XmlReaderSettings třídou.The DtdProcessing enumeration is used by the XmlReaderSettings class.

EntityHandling

Určuje způsob, jakým jsou XmlTextReader XmlValidatingReader zpracovány entity.Specifies how the XmlTextReader or XmlValidatingReader handle entities.

Formatting

Určuje možnosti formátování XmlTextWriter .Specifies formatting options for the XmlTextWriter.

NamespaceHandling

Určuje, zda mají být v nástroji odebrány duplicitní deklarace oboru názvů XmlWriter .Specifies whether to remove duplicate namespace declarations in the XmlWriter.

NewLineHandling

Určuje způsob zpracování konců řádků.Specifies how to handle line breaks.

ReadState

Určuje stav čtecího zařízení.Specifies the state of the reader.

ValidationType

Určuje typ ověřování, který má být proveden.Specifies the type of validation to perform.

WhitespaceHandling

Určuje, jak je zpracováván prázdný znak.Specifies how white space is handled.

WriteState

Určuje stav XmlWriter .Specifies the state of the XmlWriter.

XmlDateTimeSerializationMode

Určuje, jak zacházet s časovou hodnotou při převodu mezi řetězcem a DateTime .Specifies how to treat the time value when converting between string and DateTime.

XmlDictionaryReaderQuotaTypes

Vytvoří výčet konfigurovatelných hodnot kvót pro XmlDictionaryReaders.Enumerates the configurable quota values for XmlDictionaryReaders.

XmlNamespaceScope

Definuje obor názvů.Defines the namespace scope.

XmlNodeChangedAction

Určuje typ změny uzlu.Specifies the type of node change.

XmlNodeOrder

Popisuje pořadí dokumentu uzlu v porovnání s druhým uzlem.Describes the document order of a node compared to a second node.

XmlNodeType

Určuje typ uzlu.Specifies the type of node.

XmlOutputMethod

Určuje metodu použitou k serializaci XmlWriter výstupu.Specifies the method used to serialize the XmlWriter output.

XmlSpace

Určuje aktuální xml:space obor.Specifies the current xml:space scope.

XmlTokenizedType

Představuje typ XML pro řetězec.Represents the XML type for the string. To umožňuje, aby byl řetězec čten jako konkrétní typ XML, například typ oddílu CDATA.This allows the string to be read as a particular XML type, for example a CDATA section type.

Delegáti

OnXmlDictionaryReaderClose

delegatepro metodu zpětného volání při zavírání čtecího modulu.delegate for a callback method when closing the reader.

XmlNodeChangedEventHandler

Představuje metodu, která zpracovává NodeChanged události,,, NodeChanging NodeInserted NodeInserting NodeRemoved a NodeRemoving .Represents the method that handles NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

Poznámky

Podporované standardySupported standards

System.XmlObor názvů podporuje tyto standardy:The System.Xml namespace supports these standards:

Podívejte se na rozdíly v oddílech specifikace W3C pro dva případy, ve kterých se třídy XML liší od doporučení W3C.See the section Differences from the W3C specs for two cases in which the XML classes differ from the W3C recommendations.

.NET Framework také poskytuje další obory názvů pro operace související s XML.The .NET Framework also provides other namespaces for XML-related operations. Seznam, popisy a odkazy najdete na webové stránce věnované oborům názvůSystem.Xml .For a list, descriptions, and links, see the System.Xml Namespaces webpage.

Asynchronní zpracování XMLProcessing XML asynchronously

System.Xml.XmlReaderTřídy a System.Xml.XmlWriter obsahují několik asynchronních metod, které jsou založeny na modelu asynchronního programování.The System.Xml.XmlReader and System.Xml.XmlWriter classes include a number of asynchronous methods that are based on the asynchronous programming model. Tyto metody lze identifikovat pomocí řetězce "Async" na konci jejich názvů.These methods can be identified by the string "Async" at the end of their names. Pomocí těchto metod můžete napsat asynchronní kód, který je podobný vašemu synchronnímu kódu, a snadno můžete migrovat svůj existující synchronní kód do asynchronního kódu.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.

  • Použijte asynchronní metody v aplikacích, kde je významná latence síťového streamu.Use the asynchronous methods in apps where there is significant network stream latency. Nepoužívejte asynchronní rozhraní API pro operace čtení/zápisu v datovém proudu nebo v místním souborovém streamu.Avoid using the asynchronous APIs for memory stream or local file stream read/write operations. Vstupní datový proud, XmlTextReader a XmlTextWriter by měl podporovat i asynchronní operace.The input stream, XmlTextReader, and XmlTextWriter should support asynchronous operations as well. V opačném případě budou vlákna stále zablokována vstupně-výstupními operacemi.Otherwise, threads will still be blocked by I/O operations.

  • Nedoporučujeme kombinování synchronních a asynchronních volání funkcí, protože byste mohli použít await klíčové slovo nebo použít synchronní rozhraní API, kde je třeba asynchronní rozhraní API.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.

  • Nenastavte XmlReaderSettings.Async XmlWriterSettings.Async příznak or na, pokud nechcete true použít asynchronní metodu.Do not set the XmlReaderSettings.Async or XmlWriterSettings.Async flag to true if you don't intend to use an asynchronous method.

  • Pokud zapomenete zadat await klíčové slovo při volání asynchronní metody, výsledky jsou nedeterministické: můžete obdržet výsledek, který jste očekávali, nebo výjimku.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.

  • Když XmlReader objekt čte velký textový uzel, může ukládat pouze částečný textovou hodnotu a vracet textový uzel, takže načtení XmlReader.Value vlastnosti může být blokováno operací I/O.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. Použijte XmlReader.GetValueAsync metodu k získání textové hodnoty v asynchronním režimu nebo použijte XmlReader.ReadValueChunkAsync metodu pro čtení velkého bloku textu v blocích.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.

  • Při použití XmlWriter objektu volejte XmlWriter.FlushAsync metodu před voláním, XmlWriter.Close aby nedošlo k zablokování vstupně-výstupních operací.When you use an XmlWriter object, call the XmlWriter.FlushAsync method before calling XmlWriter.Close to avoid blocking an I/O operation.

Rozdíly mezi specifikacemi W3CDifferences from the W3C specs

Ve dvou případech, které zahrnují omezení pro součásti schématu skupiny modelů, se System.Xml obor názvů liší od doporučení konsorcia W3C.In two cases that involve constraints on model group schema components, the System.Xml namespace differs from the W3C recommendations.

Konzistence v deklaracích elementů:Consistency in element declarations:

V některých případech, při použití substitučních skupin, System.Xml implementace nesplňuje "omezení součásti schématu: deklarace prvků konzistentní", což je popsáno v oddílu omezení pro součásti schématu skupiny modelů specifikace W3C.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.

Například následující schéma obsahuje prvky, které mají stejný název, ale různé typy ve stejném modelu obsahu a používají substituční skupiny.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. To by mělo způsobit chybu, ale System.Xml zkompiluje a ověří schéma bez chyb.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>

V tomto schématu typ t3 obsahuje sekvenci prvků.In this schema, type t3 contains a sequence of elements. Z důvodu nahrazení může odkaz na element e1 z sekvence mít za následek buď element e1 typu, t1 nebo element e2 typu t2 .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. V druhém případě by to vedlo ke sekvenci dvou e2 prvků, kde jedna je typu t2 a druhá je typu 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.

Přiřazení jedinečné částice:Unique particle attribution:

Při splnění následujících podmínek System.Xml implementace nesplňuje "omezení součásti schématu: jedinečné označení částic", které je popsáno v oddílu omezení pro součásti schématu modelu skupiny specifikace W3C.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.

  • Jeden z prvků ve skupině odkazuje na jiný element.One of the elements in the group references another element.

  • Odkazovaná element je hlavní prvek substituční skupiny.The referenced element is a head element of a substitution group.

  • Substituční skupina obsahuje prvek, který má stejný název jako jeden z prvků ve skupině.The substitution group contains an element that has the same name as one of the elements in the group.

  • Mohutnost prvku, který odkazuje na element head substituční skupiny a element se stejným názvem jako substituční skupina element není opraven (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).

  • Definice elementu, který odkazuje na substituční skupinu, předchází definici elementu se stejným názvem jako substituční skupina 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.

Například ve schématu níže je model obsahu nejednoznačný a má způsobit chybu kompilace, ale System.Xml zkompiluje schéma bez chyb.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>

Pokud se pokusíte ověřit následující XML od výše uvedeného schématu, ověření se nezdaří s následující zprávou: "element ' E3 ' má neplatný podřízený element ' E2 '. a XmlSchemaValidationException bude vyvolána výjimka.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>

Chcete-li tento problém obejít, můžete přepínat deklarace elementů v dokumentu XSD.To work around this problem, you can swap element declarations in the XSD document. Příklad: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>

se zobrazí takto:becomes this:

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

Tady je další příklad stejného problému: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>

Pokud se pokusíte ověřit následující XML oproti výše uvedenému schématu, ověření selže s následující výjimkou: "Neošetřená výjimka: System.Xml.Schema.XmlSchemaValidationException:" E2 "El-element je neplatný – hodnota ' ABC ' je vzhledem ke svému datovému typu neplatná 'http://www.w3.org/2001/XMLSchema:int' – řetězec ' ABC ' není platnou hodnotou Int32."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>

Důležité informace o zabezpečeníSecurity considerations

Typy a členy v System.Xml oboru názvů spoléhají na systém zabezpečení .NET.The types and members in the System.Xml namespace rely on the .NET security system. Následující části popisují problémy zabezpečení, které jsou specifické pro technologie XML.The following sections discuss security issues that are specific to XML technologies.

Všimněte si také, že když použijete System.Xml typy a členy, pokud XML obsahuje data, která mají potenciální dopad na ochranu osobních údajů, musíte implementovat svou aplikaci způsobem, který respektuje ochranu osobních údajů koncových uživatelů.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.

Externí přístupExternal access

Několik technologií XML má možnost načíst další dokumenty během zpracování.Several XML technologies have the ability to retrieve other documents during processing. Například definice typu dokumentu (DTD) se může nacházet v analyzovaném dokumentu.For example, a document type definition (DTD) can reside in the document being parsed. Deklarace DTD může být také živá v externím dokumentu, na který je odkazováno z analyzovaného dokumentu.The DTD can also live in an external document that is referenced by the document being parsed. Technologie XSD (XML Schema Definition Language) a XSLT mají taky možnost zahrnout informace z jiných souborů.The XML Schema definition language (XSD) and XSLT technologies also have the ability to include information from other files. Tyto externí prostředky mohou představovat určité problémy se zabezpečením.These external resources can present some security concerns. Například budete chtít zajistit, že aplikace načte soubory pouze z důvěryhodných webů a že soubor, který načte, neobsahuje škodlivá data.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.

XmlUrlResolverTřída se používá k načtení dokumentů XML a k překladu externích prostředků, jako jsou entity, DTD nebo schémata, a direktivy import nebo zahrnutí.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.

Tuto třídu můžete přepsat a určit objekt, XmlResolver který se má použít.You can override this class and specify the XmlResolver object to use. Třídu použijte v případě, že XmlSecureResolver potřebujete otevřít prostředek, který neovládáte nebo který není důvěryhodný.Use the XmlSecureResolver class if you need to open a resource that you do not control, or that is untrusted. XmlSecureResolverZabalí XmlResolver a umožňuje omezit prostředky, ke kterým má podkladová XmlResolver práva přístup.The XmlSecureResolver wraps an XmlResolver and allows you to restrict the resources that the underlying XmlResolver has access to.

Odepření službyDenial of service

Následující scénáře jsou považovány za méně zranitelné vůči útokům DOS, protože System.Xml třídy poskytují způsob ochrany před těmito útoky.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.

  • Analýza dat XML textu.Parsing text XML data.

  • Analýza binárních dat XML, pokud byla data binárního souboru XML vygenerována Microsoft SQL Server.Parsing binary XML data if the binary XML data was generated by Microsoft SQL Server.

  • Zápis dokumentů a fragmentů XML ze zdrojů dat do systému souborů, datových proudů, a TextWriter nebo StringBuilder .Writing XML documents and fragments from data sources to the file system, streams, a TextWriter, or a StringBuilder.

  • Načítají se dokumenty do objektu model DOM (Document Object Model) (DOM), pokud používáte XmlReader objekt a XmlReaderSettings.DtdProcessing nastavíte na DtdProcessing.Prohibit .Loading documents into the Document Object Model (DOM) object if you are using an XmlReader object and XmlReaderSettings.DtdProcessing set to DtdProcessing.Prohibit.

  • Navigace v objektu modelu DOM.Navigating the DOM object.

Následující scénáře se nedoporučují, pokud máte obavy týkající se útoků na dostupnost služby nebo pokud pracujete v nedůvěryhodném prostředí.The following scenarios are not recommended if you are concerned about denial of service attacks, or if you are working in an untrusted environment.

  • Zpracování DTD.DTD processing.

  • Zpracování schématu.Schema processing. To zahrnuje přidání nedůvěryhodného schématu do kolekce schémat, kompilování nedůvěryhodného schématu a ověřování pomocí nedůvěryhodného schématu.This includes adding an untrusted schema to the schema collection, compiling an untrusted schema, and validating by using an untrusted schema.

  • Zpracování XSLT.XSLT processing.

  • Analýza libovolného datového proudu binárních dat XML zadaných uživatelem.Parsing any arbitrary stream of user supplied binary XML data.

  • Operace DOM, jako je dotazování, úpravy, přesun dílčích stromů mezi dokumenty a ukládání objektů DOM.DOM operations such as querying, editing, moving sub-trees between documents, and saving DOM objects.

Pokud máte obavy týkající se odepření problémů se službou nebo pokud se zabýváte nedůvěryhodnými zdroji, nepovolujte zpracování DTD.If you are concerned about denial of service issues or if you are dealing with untrusted sources, do not enable DTD processing. Toto je ve výchozím nastavení zakázáno u XmlReader objektů, které XmlReader.Create Metoda vytvoří.This is disabled by default on XmlReader objects that the XmlReader.Create method creates.

Poznámka

XmlTextReaderUmožňuje ve výchozím nastavení zpracovávat DTD.The XmlTextReader allows DTD processing by default. XmlTextReader.DtdProcessingTuto funkci můžete zakázat pomocí vlastnosti.Use the XmlTextReader.DtdProcessing property to disable this feature.

Pokud máte povolené zpracování DTD, můžete použít XmlSecureResolver třídu k omezení prostředků, ke kterým XmlReader může přistupovat.If you have DTD processing enabled, you can use the XmlSecureResolver class to restrict the resources that the XmlReader can access. Můžete také navrhnout aplikaci tak, aby zpracování XML bylo omezené na paměť a čas.You can also design your app so that the XML processing is memory and time constrained. V aplikaci ASP.NET můžete například nakonfigurovat limity časových limitů.For example, you can configure timeout limits in your ASP.NET app.

Požadavky na zpracováníProcessing considerations

Vzhledem k tomu, že dokumenty XML mohou obsahovat odkazy na jiné soubory, je obtížné určit, kolik energie zpracování je potřeba k analýze dokumentu XML.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. Například dokumenty XML mohou obsahovat DTD.For example, XML documents can include a DTD. Pokud deklarace DTD obsahuje vnořené entity nebo komplexní modely obsahu, může trvat nadměrné množství času k analýze dokumentu.If the DTD contains nested entities or complex content models, it could take an excessive amount of time to parse the document.

Při použití XmlReader můžete omezit velikost dokumentu, který lze analyzovat nastavením XmlReaderSettings.MaxCharactersInDocument Vlastnosti.When using XmlReader, you can limit the size of the document that can be parsed by setting the XmlReaderSettings.MaxCharactersInDocument property. Můžete omezit počet znaků, které jsou výsledkem rozšíření entit, nastavením XmlReaderSettings.MaxCharactersFromEntities Vlastnosti.You can limit the number of characters that result from expanding entities by setting the XmlReaderSettings.MaxCharactersFromEntities property. Příklady nastavení těchto vlastností najdete v příslušných referenčních tématech.See the appropriate reference topics for examples of setting these properties.

Technologie XSD a XSLT mají další možnosti, které mohou ovlivnit výkon zpracování.The XSD and XSLT technologies have additional capabilities that can affect processing performance. Například je možné sestavit schéma XML, které vyžaduje značnou dobu pro zpracování při vyhodnocování v relativně malém dokumentu.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. Je také možné vkládat bloky skriptu v šabloně stylů XSLT.It is also possible to embed script blocks within an XSLT style sheet. Oba případy představují potenciální bezpečnostní hrozbu pro vaši aplikaci.Both cases pose a potential security threat to your app.

Při vytváření aplikace, která používá XslCompiledTransform třídu, byste měli mít na paměti následující položky a jejich dopady:When creating an app that uses the XslCompiledTransform class, you should be aware of the following items and their implications:

  • Ve výchozím nastavení je skriptování XSLT zakázané.XSLT scripting is disabled by default. Skriptování XSLT by mělo být povoleno pouze v případě, že potřebujete podporu skriptů a pracujete v plně důvěryhodném prostředí.XSLT scripting should be enabled only if you require script support and you are working in a fully trusted environment.

  • Funkce XSLT document() je ve výchozím nastavení zakázána.The XSLT document() function is disabled by default. Pokud povolíte document() funkci, omezte přístup k prostředkům, ke kterým lze přistupovat předáním XmlSecureResolver objektu XslCompiledTransform.Transform metodě.If you enable the document() function, restrict the resources that can be accessed by passing an XmlSecureResolver object to the XslCompiledTransform.Transform method.

  • Ve výchozím nastavení jsou objekty rozšíření povolené.Extension objects are enabled by default. Pokud XsltArgumentList je objekt, který obsahuje objekty rozšíření XslCompiledTransform.Transform , předán metodě, jsou použity objekty rozšíření.If an XsltArgumentList object that contains extension objects is passed to the XslCompiledTransform.Transform method, the extension objects are used.

  • Šablony stylů XSLT můžou obsahovat odkazy na jiné soubory a vložené bloky skriptu.XSLT style sheets can include references to other files and embedded script blocks. Uživatel se zlými úmysly může to využít tak, že vám poskytne data nebo šablony stylů, které při spuštění můžou způsobit, že systém bude zpracovávat, dokud počítač nedosáhne nedostatku prostředků.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.

  • Pro aplikace XSLT, které běží v prostředí smíšeného vztahu důvěryhodnosti, může dojít k falšování šablony stylů.XSLT apps that run in a mixed trust environment can result in style sheet spoofing. Uživatel se zlými úmysly může například načíst objekt se škodlivou šablonou stylů a předat ho jinému uživateli, který následně volá XslCompiledTransform.Transform metodu a provede transformaci.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.

Tyto problémy se zabezpečením je možné zmírnit tím, že nepovolíte skriptování nebo document() funkci, pokud šablona stylů pochází z důvěryhodného zdroje a nepřijímá XslCompiledTransform objekty, šablony stylů XSLT nebo zdrojová data XML z nedůvěryhodného zdroje.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.

Zpracování výjimekException handling

Výjimky vyvolané komponentami nižší úrovně můžou zveřejnit informace o cestě, které nechcete zpřístupnit aplikaci.Exceptions thrown by lower level components can disclose path information that you do not want exposed to the app. Vaše aplikace musí zachytit výjimky a správně je zpracovat.Your apps must catch exceptions and process them appropriately.

Viz také