Share via


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.

Dichiarazione manuale degli spazi dei nomi

È 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", Nothing, "urn:1")
writer.WriteStartElement("item", "urn:1")
writer.WriteEndElement()
writer.WriteStartElement("item", "urn:1")
writer.WriteEndElement()
writer.WriteEndElement()
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.

Sostituzione degli spazi dei nomi correnti

È 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", Nothing, "abc")
writer.WriteEndElement()
writer.WriteEndElement()
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>

Specifica di un prefisso dello spazio dei nomi

È 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()
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".

Nota

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.

Vedere anche

Altre risorse

Scrittura di XML con XmlWriter