Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

NIB: gestione dello spazio dei nomi in XmlWriter

Gli spazi dei nomi consentono di qualificare i nomi di elementi e attributi in un documento XML. I prefissi dello spazio dei nomi consentono di associare elementi e attributi agli spazi dei nomi, che a loro volta sono associati a un riferimento URI. Gli spazi dei nomi assicurano l'univocità dei nomi di elementi e attributi in un documento XML.

XmlWriter mantiene uno stack dello spazio dei nomi corrispondente a tutti gli spazi dei nomi definiti nell'ambito dello spazio dei nomi corrente. Quando si scrivono elementi e attributi, è possibile utilizzare gli spazi dei nomi nei seguenti modi:

  • Dichiarare manualmente gli spazi dei nomi.

  • Sostituire la dichiarazione dello spazio dei nomi corrente con un nuovo spazio dei nomi.

  • Specificare un prefisso dello spazio dei nomi quando si scrivono attributi o elementi.

È possibile scrivere manualmente le dichiarazioni degli spazi dei nomi utilizzando il metodo WriteAttributeString. Può essere utile quando si conosce il metodo migliore per ottimizzare il numero di dichiarazioni dello spazio dei nomi. Nel codice seguente viene creata una dichiarazione dello spazio dei nomi nell'elemento radice.


writer.WriteStartElement("root");
writer.WriteAttributeString("xmlns", "x", null, "urn:1");
writer.WriteStartElement("item", "urn:1");
writer.WriteEndElement();
writer.WriteStartElement("item", "urn:1");
writer.WriteEndElement();
writer.WriteEndElement();


Tale codice genererà la stringa XML seguente.

<root xmlns:x="urn:1">
  <x:item/>
  <x:item/>
</root>

Poiché la dichiarazione dello spazio dei nomi si trova nell'elemento root, non viene duplicata nei due elementi figlio.Anche il prefisso viene prelevato dagli elementi item dalla dichiarazione dello spazio dei nomi.

È possibile sostituire manualmente gli spazi dei nomi associati a un prefisso specifico. Nel codice seguente l'URI dello spazio dei nomi per il prefisso "x" viene modificato da "123" a "abc".


writer.WriteStartElement("x", "root", "123");
writer.WriteStartElement("item");
writer.WriteAttributeString("xmlns", "x", null, "abc");
writer.WriteEndElement();
writer.WriteEndElement();


Tale codice genererà la stringa XML seguente:

<x:root xmlns:x="123">
  <item xmlns:x="abc" />
</x:root>

È anche possibile passare il prefisso dello spazio dei nomi da utilizzare, specificando in modo esplicito un prefisso mentre si scrive un elemento o un attributo. Molti dei metodi utilizzati per scrivere elementi e attributi consentono all'utente di specificare un prefisso dello spazio dei nomi. Nel codice seguente viene mostrato come specificare un prefisso quando si scrive un elemento.


writer.WriteStartElement("x", "root", "urn:1");
writer.WriteStartElement("y", "item", "urn:1");
writer.WriteEndElement();
writer.WriteEndElement();


Tale codice genererà la stringa XML seguente:

<x:root xmlns:x="urn:1">
  <y:item xmlns:y="urn:1"/>
</x:root>

XmlWriter consente di mantenere entrambi i prefissi, "x" e "y".

NotaNota

Tutte le implementazioni di XmlWriter, incluso XmlTextWriter, consentono allo spazio dei nomi di restare vuoto quando viene fornito un prefisso.In questo caso, il writer ignora il prefisso.Tale comportamento differisce da quello di Microsoft .NET Framework versione 2.0.In versioni precedenti questa condizione genera un'XmlException.

Mostra: