XmlReaderSettings.ConformanceLevel Propriété

Définition

Obtient ou définit le niveau de conformité que XmlReader respecte.

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

Valeur de propriété

ConformanceLevel

Une des valeurs d'énumération qui spécifie le niveau de conformité appliqué par le lecteur XML. La valeur par défaut est Document.

Exemples

L’exemple suivant crée un XmlReader objet qui lit un fragment XML.

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)

Remarques

Les lecteurs XML créés par la Create méthode répondent aux exigences de conformité suivantes par défaut :

  • Les nouvelles lignes et la valeur d’attribut sont normalisées en fonction de la recommandation W3C XML 1.0.

  • Toutes les entités sont automatiquement développées.

  • Les attributs par défaut déclarés dans la définition de type de document sont toujours ajoutés même lorsque le lecteur ne valide pas.

  • La déclaration du préfixe XML mappé à l’URI d’espace de noms XML correct est autorisée.

  • Les noms de notation dans une déclaration d’attribut unique NotationType et NmTokens dans une déclaration d’attribut unique Enumeration sont distincts.

Vous pouvez utiliser la ConformanceLevel propriété pour vérifier et garantir que le flux lu est conforme aux règles d’un document XML 1.0 bien formé ou d’un fragment de document. Si les données ne sont pas conformes, une XmlException exception est levée. La valeur par défaut est ConformanceLevel.Document (conformité au niveau du document).

Les trois niveaux de conformité sont les suivants :

Paramètre Description
Document Garantit que les données XML sont conformes aux règles d’un document XML 1.0 bien formé. Ce niveau de vérification garantit que n’importe quel processeur peut consommer le flux lu en tant que document XML 1.0 bien formé.

Le lecteur vérifie les éléments suivants :

- L’élément de niveau supérieur ne doit pas avoir de nœuds autres que la déclaration XML, la définition de type de document (DTD), l’élément, le commentaire, l’espace blanc ou l’instruction de traitement.
- Les données XML doivent avoir exactement un nœud d’élément de niveau supérieur.
Fragment Garantit que les données XML sont conformes aux règles d’un fragment de document XML 1.0 bien formé.

Ce paramètre accepte les données XML avec plusieurs éléments racines ou nœuds de texte de niveau supérieur. Ce niveau de vérification garantit que n’importe quel processeur peut consommer le flux lu en tant qu’entité analysée externe.
Auto Spécifie que le lecteur doit déterminer le niveau de vérification de conformité en fonction des données entrantes.

La vérification de conformité du document est appliquée si les données XML contiennent des informations sur la DTD.

La vérification de conformité du fragment est appliquée si les données XML contiennent l'un des éléments suivants :

- Texte, CDATA ou nœud de référence d’entité au niveau racine.
- Plus d’un élément au niveau racine.
- Aucun élément au niveau racine.

Un objet XmlException est levé en cas de conflit, par exemple lorsqu'il y a un nœud de texte ou une DTD au niveau racine.

Ce paramètre peut être utilisé dans des scénarios englobants lorsque la méthode Create permet d’ajouter des fonctionnalités supplémentaires à un objet XmlReader existant. Dans ce cas, ConformanceLevel.Document n’ajoute aucune nouvelle vérification de conformité. La vérification de conformité est appliquée à l'objet XmlReader qui est enveloppé.

Notes

La recommandation XML 1.0 nécessite une conformité au niveau du document lorsqu'une DTD est présente. Par conséquent, si le lecteur est configuré pour prendre en charge ConformanceLevel.Fragment, mais que les données XML contiennent une définition de type de document (DTD), une levée XmlException est levée.

Voici comment le lecteur gère des violations de conformité spécifiques en fonction du paramètre de la ConformanceLevel propriété :

Condition Document Fragment Auto
Le texte ou une valeur typée s’affiche au niveau supérieur. XmlException est levée. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre.
Plusieurs éléments ou aucun élément n’apparaissent au niveau supérieur. XmlException est levée. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre.
L’élément de niveau supérieur est un espace blanc. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre.
L’élément de niveau supérieur est un attribut (reconnu comme un nœud de texte). XmlException est levée. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre.
Plusieurs nœuds de texte contigus sont détectés. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre. Non considéré comme une violation pour ce paramètre.
Le même préfixe d’espace de noms est déclaré deux fois dans la même étendue locale. XmlException est levée. XmlException est levée. XmlException est levée.
L’espace de noms d’un élément ou d’un attribut n’existe pas dans l’étendue locale. XmlException est levée. XmlException est levée. XmlException est levée.
Les données contiennent une incompatibilité de préfixe-espace de noms. XmlException est levée. XmlException est levée. XmlException est levée.
xml:space l’attribut contient une valeur non valide. XmlException est levée. XmlException est levée. XmlException est levée.
Un nom non valide est détecté. XmlException est levée. XmlException est levée. XmlException est levée.
Le xml préfixe n’est pas mis en correspondance avec l’URI http://www.w3.org/XML/1998/namespace . XmlException est levée. XmlException est levée. XmlException est levée.

S’applique à

Voir aussi