XmlWriterSettings.ConformanceLevel Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il livello di conformità per cui il writer XML controlla l'output XML.
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à (documento, frammento o rilevamento automatico). Il valore predefinito è Document.
Esempio
Nell'esempio seguente viene scritto un frammento XML in un flusso di memoria.
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;
// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
XmlWriter writer = XmlWriter.Create(strm, settings);
writer.WriteElementString("orderID", "1-456-ab");
writer.WriteElementString("orderID", "2-36-00a");
writer.Flush();
writer.Close();
// Do additional processing on the stream.
Dim settings As XmlWriterSettings = New XmlWriterSettings()
settings.OmitXmlDeclaration = true
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.CloseOutput = false
' Create the XmlWriter object and write some content.
Dim strm as MemoryStream = new MemoryStream()
Dim writer As XmlWriter = XmlWriter.Create(strm, settings)
writer.WriteElementString("orderID", "1-456-ab")
writer.WriteElementString("orderID", "2-36-00a")
writer.Flush()
writer.Close()
' Do additional processing on the stream.
Commenti
La XmlWriterSettings.ConformanceLevel proprietà configura il writer XML per verificare e garantire che il flusso scritto sia conforme a un determinato set di regole. I dati XML possono essere controllati per verificare che siano conformi alle regole per un documento XML 1.0 ben formato o un frammento di documento. La tabella seguente descrive le tre impostazioni. Il valore predefinito è la conformità a livello di documento.
Impostazione | Descrizione |
---|---|
Document | Assicura che l'output XML sia conforme alle regole per un documento XML 1.0 ben formato e che possa essere elaborato da qualsiasi processore conforme. I controlli di conformità del documento includono la maggior parte dei controlli a livello di frammento e assicurarsi anche quanto segue: - L'elemento di primo livello non include nodi diversi da dichiarazione XML, DTD, elemento, commento, spazio vuoto o istruzione di elaborazione. - I dati XML hanno un solo nodo di elemento di primo livello. Il writer XML non analizza le informazioni DTD scritte. L'utente è responsabile di garantire che il DTD sia ben formato. |
Fragment | Assicura che l'output XML sia conforme alle regole per un frammento di documento XML 1.0 ben formato. Questa impostazione accetta i dati XML con più elementi radice o nodi di testo a livello superiore. Questo livello di controllo assicura che qualunque processore possa utilizzare il flusso di dati letto come un'entità analizzata esterna XML 1.0. Le informazioni DTD non sono consentite nei frammenti di documento. |
Auto | Specifica che il writer XML deve determinare il livello di controllo della conformità in base ai dati in ingresso. Questa impostazione può essere utile quando non si conosce se il codice XML generato sarà un documento XML ben formato o un frammento. Il controllo della conformità del documento viene applicato nei seguenti casi: - Se viene chiamato il WriteStartDocument metodo. - Se le informazioni DTD vengono scritte. Il controllo della conformità dei frammenti viene applicato se i dati XML contengono uno di questi elementi: - Nodo Text, CDATA o EntityReference a livello radice. - Più di un elemento a livello radice. - Nessun elemento a livello radice. Viene generato un tipo XmlException se si verifica un conflitto, ad esempio quando si tenta di scrivere un nodo di tipo text e una DTD a livello radice. Se si esegue il wrapping di un altro oggetto, l'oggetto esterno non esegue alcun XmlWriter controllo di conformità aggiuntivo. Questa operazione viene lasciata all'oggetto sottostante. |
Se il writer XML rileva eventuali informazioni che violano il livello di conformità specificato, genera un'eccezione. In alcuni casi, il writer XML corregge automaticamente l'errore di conformità. Ad esempio, il writer chiude un attributo non chiuso senza generare un'eccezione. Nella tabella seguente viene illustrato come vengono gestite varie violazioni di conformità in ogni impostazione.
Condizione | Document | Fragment | Auto |
---|---|---|---|
Vengono trovate informazioni DTD. | Non una violazione per questa impostazione. Tuttavia, il writer XML non controlla il DTD; l'utente deve assicurarsi che il DTD sia ben formato. | XmlException viene generata. | Viene applicato il controllo della conformità dei documenti. |
Viene chiamato WriteStartDocument. | Non considerata una violazione per questa impostazione. | XmlException viene generata. | Viene applicato il controllo della conformità dei documenti. |
WriteStartDocument viene chiamato più volte. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Viene visualizzato un valore di testo a livello superiore (non sotto un elemento o un nodo attributo). | XmlException viene generata. | Non considerata una violazione. | Viene applicato il controllo di conformità del frammento. |
Più elementi o nessun elemento vengono visualizzati a livello superiore. | XmlException viene generata. | Non considerata una violazione. | Viene applicato il controllo di conformità del frammento. |
L'elemento di primo livello è spazio vuoto. | Non considerata una violazione. | Non considerata una violazione. | Non considerata una violazione. |
WriteEndAttribute non viene chiamato per terminare un nodo attributo. | Correzione da parte del writer XML. | Correzione da parte del writer XML. | Correzione da parte del writer XML. |
Il writer XML si trova in uno stato annidato in modo non corretto, ad esempio una WriteStartElement chiamata viene seguita da un WriteEndAttributeoggetto . | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
L'elemento di primo livello è un attributo. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Vengono rilevati più nodi contigui di tipo text. | Non considerata una violazione, ma è responsabilità dell'utente concatenare i nodi di testo. | Non considerata una violazione, ma è responsabilità dell'utente concatenare i nodi di testo. | Non considerata una violazione, ma è responsabilità dell'utente concatenare i nodi di testo. |
Lo stesso prefisso dello spazio dei nomi viene dichiarato due volte in un elemento, | Il writer XML genera un nuovo prefisso per il secondo spazio dei nomi. | Il writer XML genera un nuovo prefisso per il secondo spazio dei nomi. | Il writer XML genera un nuovo prefisso per il secondo spazio dei nomi. |
WriteStartElement specifica un prefisso e uno spazio dei nomi non dichiarato all'interno di tale ambito oppure il prefisso è associato a uno spazio dei nomi diverso. | Il writer XML scrive il nodo dello spazio dei nomi necessario. | Il writer XML scrive il nodo dello spazio dei nomi necessario. | Il writer XML scrive il nodo dello spazio dei nomi necessario. |
WriteStartAttribute specifica un prefisso e uno spazio dei nomi non dichiarato all'interno di tale ambito. | Il writer XML scrive il nodo dello spazio dei nomi necessario. | Il writer XML scrive il nodo dello spazio dei nomi necessario. | Il writer XML scrive il nodo dello spazio dei nomi necessario. |
WriteStartAttribute specifica un prefisso e uno spazio dei nomi, ma il prefisso è associato a uno spazio dei nomi diverso nell'ambito. | Il writer XML ignora il prefisso specificato e cerca il prefisso corretto o genera un nuovo prefisso. | Il writer XML ignora il prefisso specificato e cerca il prefisso corretto o genera un nuovo prefisso. | Il writer XML ignora il prefisso specificato e cerca il prefisso corretto o genera un nuovo prefisso. |
WriteQualifiedName viene usato per scrivere contenuto dell'elemento usando uno spazio dei nomi che non esiste all'interno dell'ambito. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
WriteQualifiedName viene usato per scrivere contenuto dell'attributo usando uno spazio dei nomi che non esiste nell'ambito. | Il writer XML scrive la dichiarazione dello spazio dei nomi necessaria. | Il writer XML scrive la dichiarazione dello spazio dei nomi necessaria. | Il writer XML scrive la dichiarazione dello spazio dei nomi necessaria. |
L'attributo xml:space non contiene un valore valido. |
XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Viene rilevato un nome non valido. | XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Il xml prefisso non corrisponde a un URI. |
Il writer XML non verifica la presenza di questo tipo di violazione. | Il writer XML non verifica la presenza di questo tipo di violazione. | Il writer XML non verifica la presenza di questo tipo di violazione. |
Il xml prefisso non corrisponde all'URI http://www.w3.org/XML/1998/namespace . |
XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |
Il prefisso o il xmlns nome locale non corrisponde a un URI. |
Il writer XML non verifica la presenza di questo tipo di violazione. | Il writer XML non verifica la presenza di questo tipo di violazione. | Il writer XML non verifica la presenza di questo tipo di violazione. |
Il prefisso o il xmlns nome locale non corrisponde all'URI http://www.w3.org/2000/xmlns . |
XmlException viene generata. | XmlException viene generata. | XmlException viene generata. |