Classe XmlSerializerNamespaces (System.Xml.Serialization)

Cambia visualizzazione:
ScriptFree
Riferimento a .NET Framework
Classe XmlSerializerNamespaces

Contiene gli spazi dei nomi e i prefissi XML che XmlSerializer usa per generare i nomi completi in un'istanza di un documento XML.

Spazio dei nomi: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)

Sintassi

Visual Basic - (Dichiarazione)
Public Class XmlSerializerNamespaces
Visual Basic (Utilizzo)
Dim instance As XmlSerializerNamespaces

C#
public class XmlSerializerNamespaces
C++
public ref class XmlSerializerNamespaces
J#
public class XmlSerializerNamespaces
JScript
public class XmlSerializerNamespaces
Note

XmlSerializerNamespaces contiene un insieme di spazi dei nomi XML, ciascuno con un prefisso associato. L'XmlSerializer utilizza un'istanza della classe XmlSerializerNamespaces per creare nomi completi in un documento XML.

Gli spazi dei nomi XML contenuti in XmlSerializerNamespaces devono essere conformi alla specifica Namespaces in XML riportata all'indirizzo www.w3.org.

Gli spazi dei nomi XML consentono di qualificare i nomi di elementi e attributi XML nei documenti XML. Un nome completo è composto da un prefisso e da un nome locale, separati da un carattere di due punti. Il prefisso funge soltanto da segnaposto ed è mappato a un URI che specifica uno spazio dei nomi. La combinazione dello spazio dei nomi URI gestito a livello universale e del nome locale genera un nome univoco.

Per creare nomi completi in un documento XML:

  1. Creare un'istanza XmlSerializerNamespaces.

  2. Utilizzare il metodo Add per aggiungere le coppie di prefissi e spazi dei nomi desiderati all'istanza.

  3. Applicare l'attributo .NET appropriato a ciascuna proprietà o classe che viene serializzata da XmlSerializer in un documento XML. Sono disponibili i seguenti attributi:

  1. Impostare la proprietà Namespace di ciascun attributo su uno dei valori dello spazio dei nomi dall'oggetto XmlSerializerNamespaces.

  2. Passare XmlSerializerNamespaces al metodo Serialize di XmlSerializer.

NotaNota

La creazione di una coppia di spazio dei nomi e prefisso vuota non è supportata. In altre parole, non è possibile creare una coppia impiegando il seguente codice:

C#
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
ns.Add("", "");
Visual Basic
Dim ns As XmlSerializerNamespaces ns = New XmlSerializerNamespaces()
ns.Add("", "")
Esempio

Nell'esempio riportato di seguito viene creato un oggetto XmlSerializerNamespaces, a cui vengono aggiunte due coppie di prefisso e spazio dei nomi. L'esempio quindi passa XmlSerializerNamespaces al metodo Serialize, che serializza un oggetto Books in un documento XML. Utilizzando l'oggetto XmlSerializerNamespaces, il metodo Serialize qualifica ciascun elemento e attributo XML con uno dei due spazi dei nomi.

Visual Basic
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization


Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("XmlNamespaces.xml")
    End Sub    
    
    Public Sub SerializeObject(ByVal filename As String)
        Dim s As New XmlSerializer(GetType(Books))
        ' Writing a file requires a TextWriter.
        Dim t As New StreamWriter(filename)
        
        ' Create an XmlSerializerNamespaces object and add two
        ' prefix-namespace pairs. 
        Dim ns As New XmlSerializerNamespaces()
        ns.Add("books", "http://www.cpandl.com")
        ns.Add("money", "http://www.cohowinery.com")
        
        ' Create a Book instance.
        Dim b As New Book()
        b.TITLE = "A Book Title"
        Dim p As New Price()
        p.price = CDec(9.95)
        p.currency = "US Dollar"
        b.PRICE = p
        Dim bks As New Books()
        bks.Book = b
        s.Serialize(t, bks, ns)
        t.Close()
    End Sub
End Class

Public Class Books
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public Book As Book
End Class

<XmlType(Namespace := "http://www.cpandl.com")> _
Public Class Book
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public TITLE As String

    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public PRICE As Price
End Class

Public Class Price
    <XmlAttribute(Namespace := "http://www.cpandl.com")> _
    Public currency As String
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public price As Decimal
End Class


C#
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeObject("XmlNamespaces.xml");
   }
 
   public void SerializeObject(string filename)
   {
      XmlSerializer s = new XmlSerializer(typeof(Books));
      // Writing a file requires a TextWriter.
      TextWriter t = new StreamWriter(filename);

      /* Create an XmlSerializerNamespaces object and add two
      prefix-namespace pairs. */
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
      ns.Add("books", "http://www.cpandl.com");
      ns.Add("money", "http://www.cohowinery.com");

      // Create a Book instance.
      Book b = new Book();
      b.TITLE = "A Book Title";
      Price p = new Price();
      p.price = (decimal) 9.95;
      p.currency = "US Dollar";
      b.PRICE = p;
      Books bks = new Books();
      bks.Book = b;
      s.Serialize(t,bks,ns);
      t.Close();
   }
}

public class Books
{
   [XmlElement(Namespace = "http://www.cohowinery.com")]
   public Book Book;
}

[XmlType(Namespace ="http://www.cpandl.com")]
public class Book
{
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string TITLE;
   [XmlElement(Namespace ="http://www.cohowinery.com")]
   public Price PRICE;
}

public class Price
{
   [XmlAttribute(Namespace = "http://www.cpandl.com")]
   public string currency;
   [XmlElement(Namespace = "http://www.cohowinery.com")]
   public decimal price;
}


C++
#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public ref class Price
{
public:

   [XmlAttributeAttribute(Namespace="http://www.cpandl.com")]
   String^ currency;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal price;
};

[XmlType(Namespace="http://www.cpandl.com")]
public ref class Book
{
public:

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ TITLE;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Price^ PRICE;
};

public ref class Books
{
public:

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Book^ Book;
};

public ref class Run
{
public:
   static void main()
   {
      Run^ test = gcnew Run;
      test->SerializeObject( "XmlNamespaces.xml" );
   }

   void SerializeObject( String^ filename )
   {
      XmlSerializer^ s = gcnew XmlSerializer( Books::typeid );

      // Writing a file requires a TextWriter.
      TextWriter^ t = gcnew StreamWriter( filename );

      /* Create an XmlSerializerNamespaces object and add two
            prefix-namespace pairs. */
      XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;
      ns->Add( "books", "http://www.cpandl.com" );
      ns->Add( "money", "http://www.cohowinery.com" );

      // Create a Book instance.
      Book^ b = gcnew Book;
      b->TITLE = "A Book Title";
      Price^ p = gcnew Price;
      p->price = (Decimal)9.95;
      p->currency = "US Dollar";
      b->PRICE = p;
      Books^ bks = gcnew Books;
      bks->Book = b;
      s->Serialize( t, bks, ns );
      t->Close();
   }
};

int main()
{
   Run::main();
}

J#
import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Serialization.*;

public class Run
{
    public static void main(String[] args)
    {
        Run test = new Run();
        test.SerializeObject("XmlNamespaces.xml");
    } //main

    public void SerializeObject(String filename)
    {
        XmlSerializer s = new XmlSerializer(Books.class.ToType());

        // Writing a file requires a TextWriter.
        TextWriter t = new StreamWriter(filename);

        /* Create an XmlSerializerNamespaces object and add two
           prefix-namespace pairs. */
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("books", "http://www.cpandl.com");
        ns.Add("money", "http://www.cohowinery.com");

        // Create a Book instance.
        Book b = new Book();
        b.title = "A Book Title";

        Price p = new Price();
        p.price = Convert.ToDecimal(9.95);
        p.currency = "US Dollar";
        
        b.price = p;

        Books bks = new Books();
        bks.book = b;

        s.Serialize(t, bks, ns);
        t.Close();
    } //SerializeObject
} //Run

public class Books
{
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public Book book;
} //Books

/** @attribute XmlType(Namespace = "http://www.cpandl.com")
 */
public class Book
{
    /** @attribute XmlElement(Namespace = "http://www.cpandl.com")
     */
    public String title;
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public Price price;
} //Book

public class Price
{
    /** @attribute XmlAttribute(Namespace = "http://www.cpandl.com")
     */
    public String currency;
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public System.Decimal price;
} //Price

Gerarchia di ereditarietà

System.Object
  System.Xml.Serialization.XmlSerializerNamespaces
Codice thread safe

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.
Piattaforme

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

Informazioni sulla versione

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0
Vedere anche