XmlArrayAttribute.Form Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, которое показывает, является ли имя XML-элемента, созданного при помощи XmlSerializer, квалифицированным или неквалифицированным.
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
Значение свойства
Одно из значений перечисления XmlSchemaForm. Значение по умолчанию — XmlSchemaForm.None
.
Примеры
В следующем примере выполняется сериализация экземпляра Enterprises
класса. Два XML-элемента имеют одно локальное имя (Company
), но разные префиксы. В примере задается Form свойство, чтобы XmlForm.Qualified
убедиться, что в экземпляре XML происходят полные имена.
#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 );
}
}
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
Комментарии
Свойство Form определяет, является ли имя XML-элемента полным или непроверенным. Свойство Form соответствует документу консорциума World Wide Web Consortium 1999 года с заголовками пространств имен в XML.
Namespace Если свойству присвоено любое значение, попытка задать Form для свойства XmlSchemaForm.Unqualified
исключение.
Параметр XmlSchemaForm.None
по умолчанию указывает XmlSerializer , чтобы проверить схему XML-документа, чтобы определить, является ли пространство имен квалифицированным. Если схема не указывает значение для отдельного элемента или атрибута, использует elementFormDefault
и attributeFormDefault
значения, чтобы определить, XmlSerializer является ли элемент или атрибут квалифицированным. В следующем XML-коде показана схема:
<schema elementFormDefault="qualified"
attributeFormDefault="unqualified"... >
<element name="Name"/>
<attribute name="Number"/>
</schema>
Когда считывает схему, Form значение для обоих Name
элементов и Number
имеет XmlSchemaForm.None
значение, но Name
элемент является квалифицированным, а Number
элемент не является квалифицированным.XmlSerializer