System.Xml Spazio dei nomi

Lo spazio dei nomi System.Xml fornisce supporto basato sugli standard per l'elaborazione di XML. The System.Xml namespace provides standards-based support for processing XML.

Classi

NameTable

Implementa una classe XmlNameTable a thread singolo.Implements a single-threaded XmlNameTable.

UniqueId

Identificatore univoco ottimizzato per GUID.A unique identifier optimized for Guids.

XmlAttribute

Rappresenta un attributo.Represents an attribute. I valori validi e predefiniti per l'attributo sono definiti in una DTD (Document Type Definition) o in uno schema.Valid and default values for the attribute are defined in a document type definition (DTD) or schema.

XmlAttributeCollection

Rappresenta una raccolta di attributi a cui è possibile accedere in base al nome o all'indice.Represents a collection of attributes that can be accessed by name or index.

XmlBinaryReaderSession

Consente di gestire in modo dinamico le stringhe ottimizzate.Enables optimized strings to be managed in a dynamic way.

XmlBinaryWriterSession

Consente di utilizzare un dizionario dinamico per comprimere le stringhe comuni che vengono visualizzate in un messaggio e mantengono lo stato.Enables using a dynamic dictionary to compress common strings that appear in a message and maintain state.

XmlCDataSection

Rappresenta una sezione CDATA.Represents a CDATA section.

XmlCharacterData

Fornisce metodi di modifica del testo utilizzati da diverse classi.Provides text manipulation methods that are used by several classes.

XmlComment

Rappresenta il contenuto di un commento XML.Represents the content of an XML comment.

XmlConvert

Codifica e decodifica i nomi XML e fornisce metodi per la conversione tra tipi Common Language Runtime e tipi XSD (XML Schema Definition Language).Encodes and decodes XML names, and provides methods for converting between common language runtime types and XML Schema definition language (XSD) types. Quando si convertono i tipi di dati, i valori restituiti sono indipendenti dalle impostazioni locali.When converting data types, the values returned are locale-independent.

XmlDataDocument

Consente di memorizzare, recuperare e modificare i dati strutturati mediante un DataSet relazionale.Allows structured data to be stored, retrieved, and manipulated through a relational DataSet.

XmlDeclaration

Rappresenta il nodo della dichiarazione XML <?xml version='1.0'...?>.Represents the XML declaration node <?xml version='1.0'...?>.

XmlDictionary

Implementa un dizionario usato per ottimizzare le implementazioni del reader/writer XML di Windows Communication Foundation (WCF).Implements a dictionary used to optimize Windows Communication Foundation (WCF)'s XML reader/writer implementations.

XmlDictionaryReader

Classe abstract che Windows Communication Foundation (WCF) deriva da XmlReader per eseguire la serializzazione e la deserializzazione.An abstract class that the Windows Communication Foundation (WCF) derives from XmlReader to do serialization and deserialization.

XmlDictionaryReaderQuotas

Contiene valori di quota configurabili per XmlDictionaryReaders.Contains configurable quota values for XmlDictionaryReaders.

XmlDictionaryString

Rappresenta una voce memorizzata in un XmlDictionary.Represents an entry stored in a XmlDictionary.

XmlDictionaryWriter

Rappresenta una classe astratta che Windows Communication Foundation (WCF) deriva da XmlWriter per eseguire la serializzazione e la deserializzazione.Represents an abstract class that Windows Communication Foundation (WCF) derives from XmlWriter to do serialization and deserialization.

XmlDocument

Rappresenta un documento XML.Represents an XML document. È possibile usare questa classe per caricare, convalidare, modificare, aggiungere e posizionare XML in un documento.You can use this class to load, validate, edit, add, and position XML in a document.

XmlDocumentFragment

Rappresenta un oggetto semplice che si rivela utile per operazioni di inserimento nella struttura ad albero.Represents a lightweight object that is useful for tree insert operations.

XmlDocumentType

Rappresenta la dichiarazione del tipo di documento.Represents the document type declaration.

XmlDocumentXPathExtensions
XmlElement

Rappresenta un elemento.Represents an element.

XmlEntity

Rappresenta una dichiarazione di entità, ad esempio <!ENTITY... >.Represents an entity declaration, such as <!ENTITY... >.

XmlEntityReference

Rappresenta un nodo di riferimento dell'entità.Represents an entity reference node.

XmlException

Restituisce informazioni dettagliate sull'ultima eccezione.Returns detailed information about the last exception.

XmlImplementation

Definisce il contesto per un insieme di oggetti XmlDocument.Defines the context for a set of XmlDocument objects.

XmlLinkedNode

Ottiene il nodo immediatamente precedente o successivo a quello corrente.Gets the node immediately preceding or following this node.

XmlNamedNodeMap

Rappresenta un insieme di nodi accessibili per nome o per indice.Represents a collection of nodes that can be accessed by name or index.

XmlNamespaceManager

Risolve, aggiunge e rimuove spazi dei nomi in una raccolta e ne consente la gestione dell'ambito.Resolves, adds, and removes namespaces to a collection and provides scope management for these namespaces.

XmlNameTable

Tabella degli oggetti stringa suddivisi in elementi di base.Table of atomized string objects.

XmlNode

Rappresenta un singolo nodo nel documento XML.Represents a single node in the XML document.

XmlNodeChangedEventArgs

Fornisce dati per gli eventi NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved e NodeRemoving.Provides data for the NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

XmlNodeList

Rappresenta un insieme ordinato di nodi.Represents an ordered collection of nodes.

XmlNodeReader

Rappresenta un visualizzatore che fornisce un accesso veloce, non in cache e di tipo forward-only ai dati XML di una classe XmlNode.Represents a reader that provides fast, non-cached forward only access to XML data in an XmlNode.

XmlNotation

Rappresenta una dichiarazione di notazione, ad esempio <!NOTATION... >.Represents a notation declaration, such as <!NOTATION... >.

XmlParserContext

Fornisce tutte le informazioni sul contesto richieste dalla classe XmlReader per analizzare un frammento XML.Provides all the context information required by the XmlReader to parse an XML fragment.

XmlProcessingInstruction

Rappresenta un'istruzione di elaborazione, definita dal codice XML per mantenere le informazioni specifiche del processore nel testo del documento.Represents a processing instruction, which XML defines to keep processor-specific information in the text of the document.

XmlQualifiedName

Rappresenta un nome XML completo.Represents an XML qualified name.

XmlReader

Rappresenta un lettore che fornisce accesso veloce, non in cache e di tipo forward-only ai dati XML.Represents a reader that provides fast, noncached, forward-only access to XML data.

XmlReaderSettings

Specifica un set di funzionalità da supportare nell'oggetto XmlReader creato dal metodo Create.Specifies a set of features to support on the XmlReader object created by the Create method.

XmlResolver

Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlSecureResolver

Consente di proteggere un'altra implementazione di XmlResolver eseguendo il wrapping dell'oggetto XmlResolver e imponendo limitazioni sulle risorse accessibili al XmlResolver sottostante.Helps to secure another implementation of XmlResolver by wrapping the XmlResolver object and restricting the resources that the underlying XmlResolver has access to.

XmlSignificantWhitespace

Rappresenta uno spazio vuoto tra markup in un nodo a contenuto misto oppure uno spazio vuoto all'interno di un ambito xml:space='preserve'.Represents white space between markup in a mixed content node or white space within an xml:space= 'preserve' scope. È indicato anche come spazio vuoto significativo.This is also referred to as significant white space.

XmlText

Rappresenta il contenuto di testo di un elemento o attributo.Represents the text content of an element or attribute.

XmlTextReader

Rappresenta un lettore che fornisce accesso veloce, non in cache e di tipo forward-only ai dati XML.Represents a reader that provides fast, non-cached, forward-only access to XML data.

A partire da .NET Framework 2.0, è consigliabile usare la classe XmlReader.Starting with the .NET Framework 2.0, we recommend that you use the XmlReader class instead.

XmlTextWriter

Rappresenta un writer che fornisce un modo veloce, non in cache e di tipo forward-only di generare flussi o file che contengono dati XML conformi alle raccomandazioni W3C Extensible Markup Language (XML) 1.0 e Namespaces in 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.

A partire da .NET Framework 2.0, è consigliabile usare la classe XmlWriter.Starting with the .NET Framework 2.0, we recommend that you use the XmlWriter class instead.

XmlUrlResolver

Risolve risorse XML esterne denominate da un URI (Uniform Resource Identifier).Resolves external XML resources named by a Uniform Resource Identifier (URI).

XmlValidatingReader

Rappresenta un lettore che fornisce che fornisce la convalida di DTD (Document Type Definition), di schemi XDR (XML-Data Reduced) e di 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.

Questa classe è obsoleta.This class is obsolete. A partire da .NET Framework 2.0, è consigliabile usare la classe XmlReaderSettings e il metodo Create per creare un lettore XML di convalida.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

Rappresenta uno spazio vuoto nel contenuto dell'elemento.Represents white space in element content.

XmlWriter

Rappresenta un writer che fornisce un modo veloce, non in cache e di tipo forward-only per generare flussi o i file contenenti dati XML.Represents a writer that provides a fast, non-cached, forward-only way to generate streams or files that contain XML data.

XmlWriterSettings

Specifica un set di funzionalità da supportare nell'oggetto XmlWriter creato dal metodo Create.Specifies a set of features to support on the XmlWriter object created by the Create method.

XmlXapResolver

Il tipo XmlXapResolver è usato per risolvere risorse nel pacchetto XAP dell'applicazione Silverlight.The XmlXapResolver type is used to resolve resources in the Silverlight application's XAP package.

Interfacce

IApplicationResourceStreamResolver

Rappresenta un resolver di flusso di risorse dell'applicazione.Represents an application resource stream resolver.

IFragmentCapableXmlDictionaryWriter

Contiene proprietà e metodi che, in caso di implementazione tramite XmlDictionaryWriter, consentono di elaborare frammenti XML.Contains properties and methods that when implemented by a XmlDictionaryWriter, allows processing of XML fragments.

IHasXmlNode

Consente ad una classe di restituire un XmlNode dal contesto o dalla posizione corrente.Enables a class to return an XmlNode from the current context or position.

IStreamProvider

Rappresenta un'interfaccia che può essere implementata da classi che forniscono flussi.Represents an interface that can be implemented by classes providing streams.

IXmlBinaryReaderInitializer

Fornisce i metodi per reinizializzare un reader binario per leggere un nuovo documento.Provides methods for reinitializing a binary reader to read a new document.

IXmlBinaryWriterInitializer

Specifica i requisiti di implementazione per i writer binari XML che derivano da questa interfaccia.Specifies implementation requirements for XML binary writers that derive from this interface.

IXmlDictionary

Una interface che definisce il contratto che un dizionario Xml deve implementare perché venga utilizzato dalle implementazioni XmlDictionaryReader e XmlDictionaryWriter.An interface that defines the contract that an Xml dictionary must implement to be used by XmlDictionaryReader and XmlDictionaryWriter implementations.

IXmlLineInfo

Fornisce un'interfaccia che consente ad una classe di restituire informazioni sulla riga e sulla posizione.Provides an interface to enable a class to return line and position information.

IXmlMtomReaderInitializer

Specifica i requisiti di implementazione per i reader MTOM XML che derivano da questa interfaccia.Specifies implementation requirements for XML MTOM readers that derive from this interface.

IXmlMtomWriterInitializer

Se implementata da un writer MTOM, questa interfaccia assicura l'inizializzazione per un writer MTOM.When implemented by an MTOM writer, this interface ensures initialization for an MTOM writer.

IXmlNamespaceResolver

Fornisce l'accesso in sola lettura a un set di mapping di prefissi e spazi dei nomi.Provides read-only access to a set of prefix and namespace mappings.

IXmlTextReaderInitializer

Specifica i requisiti di implementazione per i reader di testo XML che derivano da questa interfaccia.Specifies implementation requirements for XML text readers that derive from this interface.

IXmlTextWriterInitializer

Specifica i requisiti di implementazione per i writer di testo XML che derivano da questa interfaccia.Specifies implementation requirements for XML text writers that derive from this interface.

Enumerazioni

ConformanceLevel

Specifica il livello di controllo dell'input o dell'output eseguito dagli oggetti XmlReader e XmlWriter.Specifies the amount of input or output checking that XmlReader and XmlWriter objects perform.

DtdProcessing

Specifica le opzioni per l'elaborazione di DTD. L'enumerazione DtdProcessing viene utilizzata dalla classe XmlReaderSettings.The DtdProcessing enumeration is used by the XmlReaderSettings class.

EntityHandling

Specifica come la classe XmlTextReader o XmlValidatingReader gestisce le entità.Specifies how the XmlTextReader or XmlValidatingReader handle entities.

Formatting

Specifica le opzioni di formattazione per XmlTextWriter.Specifies formatting options for the XmlTextWriter.

NamespaceHandling

Specifica se rimuovere le dichiarazioni di spazio dei nomi duplicate nell'oggetto XmlWriter.Specifies whether to remove duplicate namespace declarations in the XmlWriter.

NewLineHandling

Specifica in che modo gestire le interruzioni di riga.Specifies how to handle line breaks.

ReadState

Specifica lo stato del lettore.Specifies the state of the reader.

ValidationType

Specifica il tipo di convalida da eseguire.Specifies the type of validation to perform.

WhitespaceHandling

Specifica come viene gestito lo spazio vuoto.Specifies how white space is handled.

WriteState

Specifica lo stato della classe XmlWriter.Specifies the state of the XmlWriter.

XmlDateTimeSerializationMode

Specifica in che modo deve essere considerato il valore dell'ora nelle conversioni tra una stringa e DateTime.Specifies how to treat the time value when converting between string and DateTime.

XmlDictionaryReaderQuotaTypes

Enumera i valori di quota configurabili per XmlDictionaryReaders.Enumerates the configurable quota values for XmlDictionaryReaders.

XmlNamespaceScope

Definisce l'ambito dello spazio dei nomi.Defines the namespace scope.

XmlNodeChangedAction

Specifica il tipo di modifica del nodo.Specifies the type of node change.

XmlNodeOrder

Descrive l'ordine dei documenti di un nodo confrontato con un secondo nodo.Describes the document order of a node compared to a second node.

XmlNodeType

Specifica il tipo di nodo.Specifies the type of node.

XmlOutputMethod

Specifica il metodo utilizzato per la serializzazione dell'output del XmlWriter.Specifies the method used to serialize the XmlWriter output.

XmlSpace

Specifica l'ambito xml:space corrente.Specifies the current xml:space scope.

XmlTokenizedType

Rappresenta il tipo XML della stringa. In tal modo la stringa può essere letta come un tipo XML particolare, ad esempio un tipo sezione CDATA.This allows the string to be read as a particular XML type, for example a CDATA section type.

Delegati

OnXmlDictionaryReaderClose

delegate per un metodo di callback alla chiusura del reader.delegate for a callback method when closing the reader.

XmlNodeChangedEventHandler

Rappresenta il metodo che gestisce gli eventi NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved e NodeRemoving.Represents the method that handles NodeChanged, NodeChanging, NodeInserted, NodeInserting, NodeRemoved and NodeRemoving events.

Commenti

Standard supportatiSupported standards

Il System.Xml dello spazio dei nomi supporta questi standard:The System.Xml namespace supports these standards:

Vedere la sezione differenze tra le specifiche W3C per due casi in cui le classi XML differiscono dalle raccomandazioni W3C.See the section Differences from the W3C specs for two cases in which the XML classes differ from the W3C recommendations.

.NET Framework fornisce anche altri spazi dei nomi per le operazioni relative a XML.The .NET Framework also provides other namespaces for XML-related operations. Per un elenco, le descrizioni e collegamenti, vedere la spazi dei nomi System. XML pagina Web.For a list, descriptions, and links, see the System.Xml Namespaces webpage.

Elaborazione XML in modo asincronoProcessing XML asynchronously

Il System.Xml.XmlReader e System.Xml.XmlWriter classi includono un numero di metodi asincroni basati sul.The System.Xml.XmlReader and System.Xml.XmlWriter classes include a number of asynchronous methods that are based on the . Questi metodi possono essere identificati dalla stringa "Async" alla fine del nome.These methods can be identified by the string "Async" at the end of their names. Con questi metodi, è possibile scrivere codice asincrono simile al codice sincrono ed è possibile migrare facilmente il codice sincrono esistente in codice asincrono.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.

  • Usare i metodi asincroni nelle App in cui è presente la latenza di flusso di rete significativo.Use the asynchronous methods in apps where there is significant network stream latency. Evitare di usare le API asincrone per operazioni di lettura/scrittura di file locale flusso o flusso di memoria.Avoid using the asynchronous APIs for memory stream or local file stream read/write operations. Flusso di input XmlTextReader, e XmlTextWriter deve supportare anche operazioni asincrone.The input stream, XmlTextReader, and XmlTextWriter should support asynchronous operations as well. In caso contrario, i thread verranno comunque bloccati dalle operazioni dei / o.Otherwise, threads will still be blocked by I/O operations.

  • Non è consigliabile combinare le chiamate di funzione sincrone e asincrone, in quanto si potrebbero dimenticare di usare il await (parola chiave) oppure usare un'API sincrona in cui è necessaria una asincrona.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.

  • Non impostare il XmlReaderSettings.Async oppure XmlWriterSettings.Async flag true se non si prevede di usare un metodo asincrono.Do not set the XmlReaderSettings.Async or XmlWriterSettings.Async flag to true if you don't intend to use an asynchronous method.

  • Se si dimentica di specificare il await parola chiave quando si chiama un metodo asincrono, i risultati sono non deterministici: È possibile ricevere il risultato previsto o un'eccezione.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.

  • Quando un XmlReader oggetto sta leggendo un nodo di testo di grandi dimensioni, potrebbe memorizzare nella cache solo un valore di testo parziale e restituire il nodo di testo, quindi, il recupero di XmlReader.Value proprietà potrebbe essere bloccata da un'operazione dei / 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. Usare la XmlReader.GetValueAsync metodo per ottenere il valore di testo in modalità asincrona, oppure utilizzare il XmlReader.ReadValueChunkAsync blocco di metodo per leggere un testo di grandi dimensioni in blocchi.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.

  • Quando si usa un' XmlWriter dell'oggetto, chiamare il XmlWriter.FlushAsync metodo prima di chiamare XmlWriter.Close per evitare di bloccare un'operazione dei / o.When you use an XmlWriter object, call the XmlWriter.FlushAsync method before calling XmlWriter.Close to avoid blocking an I/O operation.

Differenze tra le specifiche W3CDifferences from the W3C specs

In due casi che riguardano i vincoli sui componenti di schema del modello gruppo, il System.Xml dello spazio dei nomi è diverso dalle raccomandazioni W3C.In two cases that involve constraints on model group schema components, the System.Xml namespace differs from the W3C recommendations.

Coerenza nelle dichiarazioni di elemento:Consistency in element declarations:

In alcuni casi, quando vengono utilizzati i gruppi di sostituzione, il System.Xml implementazione non soddisfa il "Schema Component Constraint: Elemento dichiarazioni coerenti,"che è descritti il vincoli su Model Group Schema Components sezione della specifica del 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.

Ad esempio, lo schema seguente include gli elementi aventi lo stesso nome ma vengono usati tipi diversi nello stesso modello di contenuto e i gruppi di sostituzione.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. Sebbene tale schema debba generare un errore, System.Xml lo compila e lo convalida senza errori.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 questo schema il tipo t3 contiene una sequenza di elementi.In this schema, type t3 contains a sequence of elements. A causa della sostituzione, il riferimento all'elemento e1 della sequenza può restituire un elemento e1 di tipo t1 o un elemento e2 di tipo 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. Il secondo caso comporterebbe una sequenza di due e2 elementi, in cui uno è di tipo t2 e l'altra è di tipo 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.

Attribuzione di particelle univoche:Unique particle attribution:

Nelle condizioni seguenti, il System.Xml implementazione non soddisfa il "Schema Component Constraint: Attribuzione di particelle univoche,"che è descritti il vincoli su Model Group Schema Components sezione della specifica del 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.

  • Uno degli elementi nel gruppo fa riferimento a un altro elemento.One of the elements in the group references another element.

  • L'elemento a cui si fa riferimento è un elemento Head di un gruppo di sostituzione.The referenced element is a head element of a substitution group.

  • Gruppo di sostituzione contiene un elemento con lo stesso nome di uno degli elementi nel gruppo.The substitution group contains an element that has the same name as one of the elements in the group.

  • La cardinalità dell'elemento a cui fa riferimento l'elemento head del gruppo di sostituzione e l'elemento con lo stesso nome come un elemento di gruppo di sostituzione non è fissa (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).

  • La definizione dell'elemento a cui fa riferimento al gruppo di sostituzione precede la definizione dell'elemento con lo stesso nome di un elemento di gruppo di sostituzione.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.

Sebbene, ad esempio, nello schema seguente il modello di contenuto sia ambiguo e debba generare un errore di compilazione, System.Xml lo compila senza errori.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>  

Se si prova a convalidare il codice XML seguente rispetto allo schema sopra riportato, la convalida avrà esito negativo con messaggio analogo al seguente: "L'elemento 'e3' ha figlio non valido 'e2' elemento." e un XmlSchemaValidationException verrà generata l'eccezione.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>  

Per risolvere questo problema, è possibile scambiare le dichiarazioni dell'elemento nel documento XSD.To work around this problem, you can swap element declarations in the XSD document. Ad esempio: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>  

diventa: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>  

Ecco un altro esempio dello stesso problema: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>  

Se si prova a convalidare il codice XML seguente rispetto allo schema sopra riportato, la convalida avrà esito negativo con l'eccezione seguente: "Eccezione non gestita: System.Xml.Schema.XmlSchemaValidationException: L'elemento 'e2' non è valido: il valore 'abc' non è valido in base al relativo tipo di dati 'http://www.w3.org/2001/XMLSchema:int' -la stringa 'abc' non è un valore Int32 valido. "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>  

Considerazioni sulla sicurezzaSecurity considerations

I tipi e membri nel System.Xml dello spazio dei nomi si basano sul sistema di sicurezza .NET.The types and members in the System.Xml namespace rely on the .NET security system. Le sezioni seguenti illustrano i problemi di sicurezza specifiche per le tecnologie XML.The following sections discuss security issues that are specific to XML technologies.

Si noti anche che quando si usa il System.Xml tipi e membri, se il XML contiene dati con potenziali implicazioni per la privacy, è necessario implementare l'app in modo che rispetta la privacy degli utenti finali.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.

Accesso esternoExternal access

Diverse tecnologie XML consentono di recuperare altri documenti durante l'elaborazione.Several XML technologies have the ability to retrieve other documents during processing. Ad esempio, una DTD (Document Type Definition) si può trovare nel documento analizzato.For example, a document type definition (DTD) can reside in the document being parsed. La DTD può anche risiedere in un documento esterno a cui fa riferimento il documento analizzato.The DTD can also live in an external document that is referenced by the document being parsed. Le tecnologie XSD (XML Schema Definition Language) e XSLT consentono inoltre di includere informazioni da altri file.The XML Schema definition language (XSD) and XSLT technologies also have the ability to include information from other files. Queste risorse esterne possono presentare alcuni problemi di sicurezza.These external resources can present some security concerns. Ad esempio, è opportuno per assicurarsi che l'app recupera i file solo da siti attendibili e che il file viene recuperato non contiene dati dannosi.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.

Il XmlUrlResolver classe viene utilizzata per caricare i documenti XML e per risolvere risorse esterne, ad esempio, DTD o schemi e importare o includere le direttive.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.

È possibile eseguire l'override di questa classe e specificare il XmlResolver oggetto da utilizzare.You can override this class and specify the XmlResolver object to use. Usare la classe XmlSecureResolver se è necessario aprire una risorsa che non si controlla o che non è considerata affidabile.Use the XmlSecureResolver class if you need to open a resource that you do not control, or that is untrusted. Il tipo XmlSecureResolver include un tipo XmlResolver e consente di limitare le risorse a cui ha accesso il tipo XmlResolver sottostante.The XmlSecureResolver wraps an XmlResolver and allows you to restrict the resources that the underlying XmlResolver has access to.

Attacco Denial of serviceDenial of service

Gli scenari seguenti sono considerati meno vulnerabili agli attacchi di tipo Denial of Service in quanto le classi System.Xml forniscono un sistema di protezione da tali attacchi.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.

  • Analisi dei dati XML di tipo text.Parsing text XML data.

  • Analisi dei dati XML binari se i dati XML binari è stati generati da Microsoft SQL Server.Parsing binary XML data if the binary XML data was generated by Microsoft SQL Server.

  • Scrittura di documenti e frammenti XML da origini dati nel file system, flussi, un tipo TextWriter o un tipo StringBuilder.Writing XML documents and fragments from data sources to the file system, streams, a TextWriter, or a StringBuilder.

  • Caricamento di documenti nell'oggetto DOM (Document Object Model) se si sta utilizzando un oggetto XmlReader e XmlReaderSettings.DtdProcessing impostato su 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.

  • Esplorazione dell'oggetto DOM.Navigating the DOM object.

Gli scenari seguenti non sono consigliabili se ci si occupa di problemi relativi agli attacchi di tipo Denial of Service o se si lavora in un ambiente non attendibile.The following scenarios are not recommended if you are concerned about denial of service attacks, or if you are working in an untrusted environment.

  • Elaborazione della DTD.DTD processing.

  • Elaborazione dello schema.Schema processing. Ciò include l'aggiunta di uno schema non attendibile alla raccolta di schemi, la compilazione di uno schema non attendibile e la convalida tramite uno schema non attendibile.This includes adding an untrusted schema to the schema collection, compiling an untrusted schema, and validating by using an untrusted schema.

  • Elaborazione XSLT.XSLT processing.

  • Analisi di un qualsiasi flusso arbitrario di dati XML binari forniti dall'utente.Parsing any arbitrary stream of user supplied binary XML data.

  • Operazioni DOM quali la creazione di query, la modifica, lo spostamento tra i sottoalberi dei documenti e il salvataggio degli oggetti DOM.DOM operations such as querying, editing, moving sub-trees between documents, and saving DOM objects.

Se si desidera evitare un attacco denial of problemi del servizio o se usano origini non attendibili, non abilitare l'elaborazione della DTD.If you are concerned about denial of service issues or if you are dealing with untrusted sources, do not enable DTD processing. Tale impostazione viene disabilitata per impostazione predefinita nella XmlReader oggetti da cui il XmlReader.Create Crea metodo.This is disabled by default on XmlReader objects that the XmlReader.Create method creates.

Nota

L'oggetto XmlTextReader consente l'elaborazione della DTD per impostazione predefinita.The XmlTextReader allows DTD processing by default. Utilizzare la proprietà XmlTextReader.DtdProcessing per disabilitare questa funzione.Use the XmlTextReader.DtdProcessing property to disable this feature.

Se hai attivato l'elaborazione della DTD, è possibile usare la XmlSecureResolver classe per limitare le risorse che il XmlReader può accedere.If you have DTD processing enabled, you can use the XmlSecureResolver class to restrict the resources that the XmlReader can access. È anche possibile progettare l'app in modo che l'elaborazione di XML è memoria e tempo limitato.You can also design your app so that the XML processing is memory and time constrained. Ad esempio, è possibile configurare limiti di timeout nell'app ASP.NET.For example, you can configure timeout limits in your ASP.NET app.

Considerazioni sull'elaborazioneProcessing considerations

Poiché i documenti XML possono contenere riferimenti ad altri file, è difficile determinare quanta capacità di elaborazione sia necessaria per analizzare un documento 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. Ad esempio, i documenti XML possono includere una DTD.For example, XML documents can include a DTD. Se la DTD contiene entità annidate o modelli di contenuto complesso, potrebbe essere necessaria una quantità eccessiva di tempo per analizzare il documento.If the DTD contains nested entities or complex content models, it could take an excessive amount of time to parse the document.

Quando si utilizza XmlReader, è possibile limitare le dimensioni del documento che è possibile analizzare impostando la proprietà XmlReaderSettings.MaxCharactersInDocument.When using XmlReader, you can limit the size of the document that can be parsed by setting the XmlReaderSettings.MaxCharactersInDocument property. Per limitare il numero di caratteri risultanti dall'espansione di entità, impostare la proprietà XmlReaderSettings.MaxCharactersFromEntities.You can limit the number of characters that result from expanding entities by setting the XmlReaderSettings.MaxCharactersFromEntities property. Per gli esempi relativi all'impostazione di queste proprietà, vedere gli argomenti di riferimento appropriati.See the appropriate reference topics for examples of setting these properties.

Le tecnologie XSD e XSLT consentono inoltre di migliorare le prestazioni dell'elaborazione.The XSD and XSLT technologies have additional capabilities that can affect processing performance. Ad esempio, è possibile creare un XML Schema che richiede una quantità maggiore di tempo per l'elaborazione quando la valutazione riguarda un documento relativamente breve.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. È inoltre possibile incorporare blocchi di script in un foglio di stile XSLT.It is also possible to embed script blocks within an XSLT style sheet. Entrambi i casi comportano una potenziale minaccia alla sicurezza per l'app.Both cases pose a potential security threat to your app.

Quando la creazione di un'app che usa il XslCompiledTransform classe, è necessario tenere gli elementi seguenti e le relative implicazioni:When creating an app that uses the XslCompiledTransform class, you should be aware of the following items and their implications:

  • Gli script XSLT sono disattivati per impostazione predefinita.XSLT scripting is disabled by default. Lo script con XSLT deve essere abilitato solo se è necessario il supporto per gli script e solo all'interno di un ambiente completamente attendibile.XSLT scripting should be enabled only if you require script support and you are working in a fully trusted environment.

  • La funzionalità XSLT document() è disattivata per impostazione predefinita.The XSLT document() function is disabled by default. Se si abilita la funzione document(), limitare le risorse a cui è possibile accedere passando un oggetto XmlSecureResolver al metodo XslCompiledTransform.Transform.If you enable the document() function, restrict the resources that can be accessed by passing an XmlSecureResolver object to the XslCompiledTransform.Transform method.

  • Gli oggetti di estensione sono abilitati per impostazione predefinita.Extension objects are enabled by default. Se un oggetto XsltArgumentList contenente oggetti di estensione viene passato al metodo XslCompiledTransform.Transform, vengono utilizzati gli oggetti di estensione.If an XsltArgumentList object that contains extension objects is passed to the XslCompiledTransform.Transform method, the extension objects are used.

  • Nei fogli di stile XSLT possono essere inclusi riferimenti ad altri file e a blocchi di script incorporati.XSLT style sheets can include references to other files and embedded script blocks. Un utente malintenzionato può sfruttare questa situazione fornendo dati o fogli di stile che, quando eseguiti, possono determinare l'elaborazione continua da parte del sistema finché le risorse del computer diventeranno insufficienti.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.

  • Applicazioni XSLT che vengono eseguite in un ambiente ad attendibilità mista possono comportare lo spoofing del foglio di stile.XSLT apps that run in a mixed trust environment can result in style sheet spoofing. Ad esempio, un utente malintenzionato può caricare un oggetto con un foglio di stile dannoso e trasferirlo a un altro utente che in un secondo momento chiama il metodo XslCompiledTransform.Transform ed esegue la trasformazione.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.

I problemi relativi alla sicurezza possono essere limitati non attivando gli script o la funzionalità document(), a meno che il foglio di stile non provenga da un'origine attendibile, e non accettando gli oggetti XslCompiledTransform, i fogli di stile XSLT o i dati di origine XML da un'origine non attendibile.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.

Gestione delle eccezioniException handling

Le eccezioni generate dai componenti di livello inferiore possono rivelare informazioni di percorso che si preferisce non esposte nell'app.Exceptions thrown by lower level components can disclose path information that you do not want exposed to the app. L'app deve intercettare le eccezioni ed elaborarli in modo appropriato.Your apps must catch exceptions and process them appropriately.

Vedi anche