XmlArrayAttribute.Form Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de XML-elementnaam die door de XmlSerializer xml-element is gegenereerd, is gekwalificeerd of niet-gekwalificeerd.
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
Waarde van eigenschap
Een van de XmlSchemaForm waarden. De standaardwaarde is XmlSchemaForm.None.
Voorbeelden
In het volgende voorbeeld wordt een exemplaar van de Enterprises klasse geserialiseerd. Twee XML-elementen hebben dezelfde lokale naam (Company) maar verschillende voorvoegsels. In het voorbeeld wordt de Form eigenschap ingesteld om ervoor te XmlForm.Qualified zorgen dat de gekwalificeerde namen voorkomen in het XML-exemplaar.
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
Opmerkingen
De Form eigenschap bepaalt of een XML-elementnaam gekwalificeerde of niet-gekwalificeerde is. De Form eigenschap voldoet aan het document world wide web consortium van 1999 met de titel Naamruimten in XML.
Als de Namespace eigenschap is ingesteld op een waarde, wordt geprobeerd de Form eigenschap in te stellen op XmlSchemaForm.Unqualified het genereren van een uitzondering.
Met de standaardinstelling geeft XmlSchemaForm.Noneu de XmlSerializer opdracht om het schema voor het XML-document te controleren om te bepalen of de naamruimte is gekwalificeerd. Als in het schema geen waarde voor een afzonderlijk element of kenmerk wordt opgegeven, worden de XmlSerializerelementFormDefault en attributeFormDefault waarden gebruikt om te bepalen of een element of kenmerk is gekwalificeerd. De volgende XML-code toont een schema:
<schema elementFormDefault="qualified"
attributeFormDefault="unqualified"... >
<element name="Name"/>
<attribute name="Number"/>
</schema>
Wanneer het XmlSerializer schema wordt gelezen, is de Form waarde voor zowel de Name als NumberXmlSchemaForm.Nonede waarde, maar het Name element is gekwalificeerd, terwijl het Number element niet gekwalificeerd is.