XmlArrayAttribute.Form Egenskap

Definition

Hämtar eller anger ett värde som anger om XML-elementnamnet som genereras av XmlSerializer är kvalificerat eller okvalificerat.

public:
 property System::Xml::Schema::XmlSchemaForm Form { System::Xml::Schema::XmlSchemaForm get(); void set(System::Xml::Schema::XmlSchemaForm value); };
public System.Xml.Schema.XmlSchemaForm Form { get; set; }
member this.Form : System.Xml.Schema.XmlSchemaForm with get, set
Public Property Form As XmlSchemaForm

Egenskapsvärde

Ett av XmlSchemaForm värdena. Standardvärdet är XmlSchemaForm.None.

Exempel

I följande exempel serialiseras en instans av Enterprises klassen. Två XML-element har samma lokala namn (Company) men olika prefix. Exemplet anger att Form egenskapen är inställd XmlForm.Qualified på för att säkerställa att de kvalificerade namnen förekommer i XML-instansen.

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);
      }
   }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.Serialization



Public Class Enterprises
    Private mywineries() As Winery
    Private mycompanies() As VacationCompany
    ' Sets the Form property to qualified, and specifies the Namespace. 
    
    <XmlArray(Form := XmlSchemaForm.Qualified, _
        ElementName := "Company", _
        Namespace := "http://www.cohowinery.com")> _
    Public Property Wineries() As Winery()
        
        Get
            Return mywineries
        End Get
        Set
            mywineries = value
        End Set
    End Property 
    
    <XmlArray(Form := XmlSchemaForm.Qualified, _
        ElementName := "Company", _
        Namespace := "http://www.treyresearch.com")> _ 
    Public Property Companies() As VacationCompany()
        
        Get
            Return mycompanies
        End Get
        Set
            mycompanies = value
        End Set
    End Property
End Class
 
Public Class Winery
    Public Name As String
End Class


Public Class VacationCompany
    Public Name As String
End Class


Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.WriteEnterprises("MyEnterprises.xml")
    End Sub
    
    
    Public Sub WriteEnterprises(filename As String)
        ' Creates an instance of the XmlSerializer class.
        Dim mySerializer As New XmlSerializer(GetType(Enterprises))
        ' Writing a file requires a TextWriter.
        Dim writer As New StreamWriter(filename)
        
        ' Creates an instance of the XmlSerializerNamespaces class.
        Dim ns As 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.
        Dim myEnterprises As New Enterprises()
        
        ' Creates objects and adds to the array. 
        Dim w1 As New Winery()
        w1.Name = "cohowinery"
        Dim myWinery(0) As Winery
        myWinery(0) = w1
        myEnterprises.Wineries = myWinery
        
        Dim com1 As New VacationCompany()
        com1.Name = "adventure-works"
        Dim myCompany(0) As VacationCompany
        myCompany(0) = com1
        myEnterprises.Companies = myCompany
        
        ' Serializes the class, and closes the TextWriter.
        mySerializer.Serialize(writer, myEnterprises, ns)
        writer.Close()
    End Sub
    
    
    Public Sub ReadEnterprises(filename As String)
        Dim mySerializer As New XmlSerializer(GetType(Enterprises))
        Dim fs As New FileStream(filename, FileMode.Open)
        Dim myEnterprises As Enterprises = CType(mySerializer.Deserialize(fs), Enterprises)
        
        Dim i As Integer
        For i = 0 To myEnterprises.Wineries.Length - 1
            Console.WriteLine(myEnterprises.Wineries(i).Name)
        Next i
        For i = 0 To myEnterprises.Companies.Length - 1
            Console.WriteLine(myEnterprises.Companies(i).Name)
        Next i
    End Sub
End Class

Kommentarer

Egenskapen Form avgör om ett XML-elementnamn är kvalificerat eller okvalificerat. Egenskapen Form överensstämmer med dokumentet World Wide Web Consortium från 1999 med titeln Namnområden i XML.

Om egenskapen Namespace är inställd på något värde, försöker du ställa in Form egenskapen så att XmlSchemaForm.Unqualified den genererar ett undantag.

StandardinställningenXmlSchemaForm.None, XmlSerializer, instruerar att kontrollera schemat för XML-dokumentet för att avgöra om namnområdet är kvalificerat. Om schemat inte anger något värde för ett enskilt element eller attribut XmlSerializer använder elementFormDefault värdena och attributeFormDefault för att avgöra om ett element eller attribut är kvalificerat. Följande XML-kod visar ett schema:

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

När läser XmlSerializer schemat Form är Namevärdet för både Number och XmlSchemaForm.None , men elementet Name är kvalificerat, medan elementet Number är okvalificerat.

Gäller för

Se även