Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

XmlArrayAttribute::Form Property

 

Gets or sets a value that indicates whether the XML element name generated by the XmlSerializer is qualified or unqualified.

Namespace:   System.Xml.Serialization
Assembly:  System.Xml (in System.Xml.dll)

public:
property XmlSchemaForm Form {
	XmlSchemaForm get();
	void set(XmlSchemaForm value);
}

Property Value

Type: System.Xml.Schema::XmlSchemaForm

One of the XmlSchemaForm values. The default is XmlSchemaForm.None.

The Form property determines whether an XML element name is qualified or unqualified. The Form property conforms to the 1999 World Wide Web Consortium (www.w3.org) document titled "Namespaces in XML."

If the Namespace property is set to any value, attempting to set the Form property to XmlSchemaForm.Unqualified throws an exception.

The default setting, XmlSchemaForm.None, instructs the XmlSerializer to check the schema for the XML document to determine whether the namespace is qualified. If the schema does not specify a value for an individual element or attribute, the XmlSerializer uses the elementFormDefault and attributeFormDefault values to determine whether an element or attribute is qualified. The following XML code shows a schema:

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

When the XmlSerializer reads the schema, the Form value for both the Name and Number is XmlSchemaForm.None, but the Name element is qualified, while the Number element is unqualified.

The following example serializes an instance of the Enterprises class. Two XML elements have the same local name (Company) but different prefixes. The example sets the Form property is set to XmlForm.Qualified to ensure that the qualified names occur in the XML instance.

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

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Winery
{
public:
   String^ Name;
};

public ref class VacationCompany
{
public:
   String^ Name;
};

public ref class Enterprises
{
private:
   array<Winery^>^wineries;
   array<VacationCompany^>^companies;

public:

   // Sets the Form property to qualified, and specifies the namespace. 
   [XmlArray(Form=XmlSchemaForm::Qualified,ElementName="Company",
   Namespace="http://www.cohowinery.com")]
   property array<Winery^>^ Wineries 
   {
      array<Winery^>^ get()
      {
         return wineries;
      }
      void set( array<Winery^>^value )
      {
         wineries = value;
      }
   }

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

int main()
{
   String^ filename = "MyEnterprises.xml";

   // Creates an instance of the XmlSerializer class.
   XmlSerializer^ mySerializer = gcnew XmlSerializer( Enterprises::typeid );

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

   // Creates an instance of the XmlSerializerNamespaces class.
   XmlSerializerNamespaces^ ns = gcnew 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 = gcnew Enterprises;

   // Creates objects and adds to the array. 
   Winery^ w1 = gcnew Winery;
   w1->Name = "cohowinery";
   array<Winery^>^myWinery = {w1};
   myEnterprises->Wineries = myWinery;
   VacationCompany^ com1 = gcnew VacationCompany;
   com1->Name = "adventure-works";
   array<VacationCompany^>^myCompany = {com1};
   myEnterprises->Companies = myCompany;

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

void ReadEnterprises( String^ filename )
{
   XmlSerializer^ mySerializer = gcnew XmlSerializer( Enterprises::typeid );
   FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
   Enterprises^ myEnterprises = dynamic_cast<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 );
   }
}

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
Show:
© 2017 Microsoft