XmlReaderSettings.ConformanceLevel Proprietà

Definizione

Ottiene o imposta il livello di conformità dell'oggetto XmlReader.Gets or sets the level of conformance which the XmlReader will comply.

public:
 property System::Xml::ConformanceLevel ConformanceLevel { System::Xml::ConformanceLevel get(); void set(System::Xml::ConformanceLevel value); };
public System.Xml.ConformanceLevel ConformanceLevel { get; set; }
member this.ConformanceLevel : System.Xml.ConformanceLevel with get, set
Public Property ConformanceLevel As ConformanceLevel

Valore della proprietà

Uno dei valori di enumerazione che specifica il livello di conformità che verrà applicato dal lettore XML.One of the enumeration values that specifies the level of conformance that the XML reader will enforce. Il valore predefinito è Document.The default is Document.

Esempi

Nell'esempio seguente viene creato XmlReader un oggetto che legge un frammento XML.The following example creates an XmlReader object that reads an XML fragment.

string xmlFrag ="<item rk:ID='abc-23'>hammer</item> " +
                        "<item rk:ID='r2-435'>paint</item>" +
                        "<item rk:ID='abc-39'>saw</item>";

// Create the XmlNamespaceManager.
NameTable nt = new NameTable();
XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt);
nsmgr.AddNamespace("rk", "urn:store-items");

// Create the XmlParserContext.
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);

// Create the reader. 
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlFrag), settings, context);

Dim xmlFrag As String = "<item rk:ID='abc-23'>hammer</item> " & _
                                     "<item rk:ID='r2-435'>paint</item>" & _
                                     "<item rk:ID='abc-39'>saw</item>"

' Create the XmlNamespaceManager.
Dim nt As New NameTable()
Dim nsmgr As New XmlNamespaceManager(nt)
nsmgr.AddNamespace("rk", "urn:store-items")

' Create the XmlParserContext.
Dim context As New XmlParserContext(Nothing, nsmgr, Nothing, XmlSpace.None)

' Create the reader. 
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader As XmlReader = XmlReader.Create(New StringReader(xmlFrag), settings, context)

Commenti

Per impostazione predefinita, i lettori XML Create creati dal metodo soddisfano i requisiti di conformità seguenti:XML readers that are created by the Create method meet the following compliance requirements by default:

  • Le nuove righe e il valore dell'attributo vengono normalizzati in base alla raccomandazione W3C XML 1,0.New lines and attribute value are normalized according to the W3C XML 1.0 Recommendation.

  • Tutte le entità vengono espanse automaticamente.All entities are automatically expanded.

  • Gli attributi predefiniti dichiarati nel Document Type Definition vengono sempre aggiunti anche quando il lettore non esegue la convalida.Default attributes declared in the document type definition are always added even when the reader does not validate.

  • È consentita la dichiarazione del prefisso XML mappato all'URI dello spazio dei nomi XML corretto.Declaration of XML prefix mapped to the correct XML namespace URI is allowed.

  • I nomi di notazione in una NotationType singola dichiarazione di NmTokens attributo e in Enumeration una singola dichiarazione di attributo sono distinti.The notation names in a single NotationType attribute declaration and NmTokens in a single Enumeration attribute declaration are distinct.

È possibile usare la ConformanceLevel proprietà per controllare e garantire che il flusso letto sia conforme alle regole per un documento XML 1,0 ben formato o un frammento di documento.You can use the ConformanceLevel property to check and guarantee that the stream being read complies with the rules for a well-formed XML 1.0 document or document fragment. Se i dati non sono conformi XmlException , viene generata un'eccezione.If the data doesn't comply, an XmlException exception is thrown. Il valore predefinito ConformanceLevel.Document è (conformità a livello di documento).The default is ConformanceLevel.Document (document-level conformance).

I tre livelli di conformità sono:The three conformance levels are:

ImpostazioneSetting DescriptionDescription
Document Garantisce che i dati XML siano conformi alle regole per un documento XML 1,0 ben formato.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document. Questo livello di controllo garantisce che qualsiasi processore possa utilizzare il flusso letto come un documento XML 1,0 ben formato.This level of checking ensures that any processor can consume the stream being read as an well-formed XML 1.0 document.

Il lettore verifica quanto segue:The reader checks for the following:

-L'elemento di livello principale non deve contenere nodi diversi dalla dichiarazione XML, Document Type Definition (DTD), elemento, commento, spazio vuoto o istruzione di elaborazione.- The top-level item must not have any nodes other than XML Declaration, document type definition (DTD), element, comment, white space, or processing instruction.
-I dati XML devono avere esattamente un nodo elemento di primo livello.- The XML data must have exactly one top-level element node.
Fragment Garantisce che i dati XML siano conformi alle regole per un frammento di documento XML 1,0 ben formato.Ensures that the XML data conforms to the rules for a well-formed XML 1.0 document fragment.

Con questa impostazione vengono accettati i dati XML con più elementi radice o i nodi di tipo text al livello principale.This setting accepts XML data with multiple root elements, or text nodes at the top-level. Questo livello di controllo garantisce che qualsiasi processore possa utilizzare il flusso letto come un' entità analizzata esterna.This level of checking ensures that any processor can consume the stream being read as an external parsed entity.
Auto Specifica che il lettore deve determinare il livello di controllo della conformità basato sui dati in ingresso.Specifies that the reader should determine the level of conformance checking based on the incoming data.

Il controllo di conformità del documento viene applicato se i dati XML contengono informazioni DTD.Document conformance checking is applied if the XML data contains DTD information.

Il controllo di conformità del frammento viene applicato se i dati XML contengono uno degli elementi seguenti:Fragment conformance checking is applied if the XML data contains one of following:

-Nodo del riferimento all'entità o al testo, CDATA a livello di radice.- Text, CDATA, or entity reference node at the root level.
-Più di un elemento a livello di radice.- More than one element at the root level.
-Nessun elemento a livello di radice.- No element at the root level.

Viene generato un tipo XmlException se si verifica un conflitto, ad esempio quando sono presenti un nodo di tipo text e una DTD a livello radice.An XmlException is thrown if there is a conflict, such as when there is a text node and a DTD at the root level.

È possibile utilizzare questa impostazione in scenari di inclusione quando viene utilizzato il metodo Create per aggiungere ulteriori funzionalità a un XmlReader esistente.This setting can be used in wrapping scenarios when the Create method is used to add additional features to an existing XmlReader. In questo caso, ConformanceLevel.Document non aggiunge alcun nuovo controllo della conformità.In this case, ConformanceLevel.Document does not add any new conformance checking. Il controllo di conformità è affidato al XmlReader che viene incluso.Conformance checking is left to the XmlReader that is being wrapped.

Nota

La raccomandazione XML 1.0 richiede la conformità a livello di documento in presenza di una DTD.The XML 1.0 recommendation requires document-level conformance when a DTD is present. Se pertanto il Reader è configurato per supportare ConformanceLevel.Fragment, ma i dati XML contengono un Document Type Definition (DTD), viene generata un' XmlException eccezione.Therefore, if the reader is configured to support ConformanceLevel.Fragment, but the XML data contains a document type definition (DTD), an XmlException is thrown.

Ecco il modo in cui il lettore gestisce violazioni di conformità specifiche a seconda dell'impostazione della ConformanceLevel proprietà:Here's how the reader handles specific conformance violations depending on the setting of the ConformanceLevel property:

CondizioneCondition Document Fragment Auto
Il testo o un valore tipizzato viene visualizzato al livello superiore.Text or a typed value appears at the top level. XmlExceptionviene generata.XmlException is thrown. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting.
Al livello principale vengono visualizzati più elementi o nessun elemento.Multiple elements or no element appear at the top level. XmlExceptionviene generata.XmlException is thrown. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting.
L'elemento di primo livello è uno spazio vuoto.Top-level item is white space. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting.
L'elemento di primo livello è un attributo (riconosciuto come nodo di testo).Top-level item is an attribute (recognized as a text node). XmlExceptionviene generata.XmlException is thrown. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting.
Vengono rilevati più nodi contigui di tipo text.Multiple, contiguous text nodes are found. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting. Non considerata una violazione per questa impostazione.Not considered a violation for this setting.
Lo stesso prefisso dello spazio dei nomi viene dichiarato due volte nello stesso ambito locale.The same namespace prefix is declared twice in the same local scope. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.
Lo spazio dei nomi in un elemento o attributo non esiste nell'ambito locale.The namespace in an element or attribute doesn't exist in the local scope. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.
I dati contengono una mancata corrispondenza tra prefisso e spazio dei nomi.Data contains a prefix-namespace mismatch. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.
xml:spacel'attributo contiene un valore non valido.xml:space attribute contains an invalid value. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.
Viene rilevato un nome non valido.An invalid name is encountered. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.
Il xml prefisso non corrisponde http://www.w3.org/XML/1998/namespace all'URI.The xml prefix isn't matched to the http://www.w3.org/XML/1998/namespace URI. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown. XmlExceptionviene generata.XmlException is thrown.

Si applica a

Vedi anche