XmlArrayAttribute.Form Proprietà

Definizione

Ottiene o imposta un valore che indica se il nome dell'elemento XML generato da XmlSerializer è completo o non qualificato.

public System.Xml.Schema.XmlSchemaForm Form { get; set; }

Valore della proprietà

XmlSchemaForm

Uno dei valori di XmlSchemaForm. Il valore predefinito è XmlSchemaForm.None.

Esempio

Nell'esempio seguente viene serializzato un'istanza della Enterprises classe. Due elementi XML hanno lo stesso nome locale (Company) ma prefissi diversi. Nell'esempio viene impostata la Form proprietà per XmlForm.Qualified assicurarsi che i nomi qualificati si verifichino nell'istanza XML.

using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

public class Enterprises
{
   private Winery[] wineries;
   private VacationCompany[] companies;
   // Sets the Form property to qualified, and specifies the namespace.
   [XmlArray(Form = XmlSchemaForm.Qualified, ElementName="Company",
   Namespace="http://www.cohowinery.com")]
   public Winery[] Wineries{
      get{return wineries;}
      set{wineries = value;}
   }

   [XmlArray(Form = XmlSchemaForm.Qualified, ElementName = "Company",
   Namespace = "http://www.treyresearch.com")]
   public VacationCompany [] Companies{
      get{return companies;}
      set{companies = value;}
   }
}

public class Winery
{
   public string Name;
}

public class VacationCompany{
   public string Name;
}

public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.WriteEnterprises("MyEnterprises.xml");
    }

   public void WriteEnterprises(string filename)
   {
      // Creates an instance of the XmlSerializer class.
      XmlSerializer mySerializer =
      new XmlSerializer(typeof(Enterprises));
      // Writing file requires a TextWriter.
      TextWriter writer = new StreamWriter(filename);

      // Creates an instance of the XmlSerializerNamespaces class.
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

      // Adds namespaces and prefixes for the XML document instance.
      ns.Add("winery", "http://www.cohowinery.com");
      ns.Add("vacationCompany", "http://www.treyresearch.com");

      // Creates an instance of the class that will be serialized.
      Enterprises myEnterprises = new Enterprises();

      // Creates objects and adds to the array.
      Winery w1= new Winery();
      w1.Name = "cohowinery";
      Winery[]myWinery = {w1};
      myEnterprises.Wineries = myWinery;

      VacationCompany com1 = new VacationCompany();
      com1.Name = "adventure-works";
      VacationCompany[] myCompany = {com1};
      myEnterprises.Companies = myCompany;

      // Serializes the class, and closes the TextWriter.
      mySerializer.Serialize(writer, myEnterprises, ns);
      writer.Close();
   }

   public void ReadEnterprises(string filename)
   {
      XmlSerializer mySerializer =
      new XmlSerializer(typeof(Enterprises));
      FileStream fs = new FileStream(filename, FileMode.Open);
      Enterprises myEnterprises = (Enterprises)
      mySerializer.Deserialize(fs);

      for(int i = 0; i < myEnterprises.Wineries.Length;i++)
      {
         Console.WriteLine(myEnterprises.Wineries[i].Name);
      }
      for(int i = 0; i < myEnterprises.Companies.Length;i++)
      {
         Console.WriteLine(myEnterprises.Companies[i].Name);
      }
   }
}

Commenti

La Form proprietà determina se un nome di elemento XML è qualificato o non qualificato. La Form proprietà è conforme al documento World Wide Web Consortium del 1999 denominato Spazi dei nomi in XML.

Se la proprietà è impostata su qualsiasi valore, tentando di impostare la Namespace Form proprietà per XmlSchemaForm.Unqualified generare un'eccezione.

L'impostazione predefinita, , XmlSchemaForm.Noneindica all'utente di XmlSerializer controllare lo schema per il documento XML per determinare se lo spazio dei nomi è qualificato. Se lo schema non specifica un valore per un singolo elemento o attributo, usa XmlSerializer i elementFormDefault valori e attributeFormDefault per determinare se un elemento o un attributo è qualificato. Il codice XML seguente mostra uno schema:

<schema elementFormDefault="qualified"   
attributeFormDefault="unqualified"... >  
   <element name="Name"/>  
   <attribute name="Number"/>  
</schema>  

Quando l'elemento XmlSerializer legge lo schema, il Form valore sia per e Number Name è XmlSchemaForm.None, ma l'elemento è qualificato, mentre l'elemento Name Number non è qualificato.

Si applica a

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1
UWP 10.0

Vedi anche