SoapTypeAttribute Costruttori
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Inizializza una nuova istanza della classe SoapTypeAttribute.
Overload
| Nome | Descrizione |
|---|---|
| SoapTypeAttribute() |
Inizializza una nuova istanza della classe SoapTypeAttribute. |
| SoapTypeAttribute(String) |
Inizializza una nuova istanza della SoapTypeAttribute classe e specifica il nome del tipo XML. |
| SoapTypeAttribute(String, String) |
Inizializza una nuova istanza della SoapTypeAttribute classe e specifica il nome e lo spazio dei nomi XML del tipo. |
SoapTypeAttribute()
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
Inizializza una nuova istanza della classe SoapTypeAttribute.
public:
SoapTypeAttribute();
public SoapTypeAttribute();
Public Sub New ()
Esempio
Nell'esempio seguente viene serializzata una classe denominata Group. L'oggetto SoapTypeAttribute viene applicato alla classe con l'oggetto TypeName impostato su "SoapGroupType". Viene SoapTypeAttribute inoltre sottoposto a override, modificando in TypeName "Team". Entrambe le versioni vengono serializzate, generando due file: SoapType.xml e SoapType2.xml.
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
// The SoapType is overridden when the
// SerializeOverride method is called.
[SoapType("SoapGroupType", "http://www.cohowinery.com")]
public class Group
{
public string GroupName;
public Employee[] Employees;
}
[SoapType("EmployeeType")]
public class Employee
{
public string Name;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeOriginal("SoapType.xml");
test.SerializeOverride("SoapType2.xml");
test.DeserializeObject("SoapType2.xml");
}
public void SerializeOriginal(string filename)
{
// Create an instance of the XmlSerializer class that
// can be used for serializing as a SOAP message.
XmlTypeMapping mapp =
(new SoapReflectionImporter()).ImportTypeMapping(typeof(Group));
XmlSerializer mySerializer = new XmlSerializer(mapp);
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
public void SerializeOverride(string filename)
{
// Create an instance of the XmlSerializer class that
// uses a SoapAttributeOverrides object.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
private XmlSerializer CreateOverrideSerializer()
{
// Create and return an XmlSerializer instance used to
// override and create SOAP messages.
SoapAttributeOverrides mySoapAttributeOverrides =
new SoapAttributeOverrides();
SoapAttributes soapAtts = new SoapAttributes();
// Override the SoapTypeAttribute.
SoapTypeAttribute soapType = new SoapTypeAttribute();
soapType.TypeName = "Team";
soapType.IncludeInSchema = false;
soapType.Namespace = "http://www.microsoft.com";
soapAtts.SoapType = soapType;
mySoapAttributeOverrides.Add(typeof(Group),soapAtts);
// Create an XmlTypeMapping that is used to create an instance
// of the XmlSerializer. Then return the XmlSerializer object.
XmlTypeMapping myMapping = (new SoapReflectionImporter(
mySoapAttributeOverrides)).ImportTypeMapping(typeof(Group));
XmlSerializer ser = new XmlSerializer(myMapping);
return ser;
}
public void DeserializeObject(string filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Reading the file requires a TextReader.
TextReader reader = new StreamReader(filename);
// Create an XML text reader.
XmlTextReader xmlReader = new XmlTextReader(reader);
xmlReader.ReadStartElement();
// Deserialize and cast the object.
Group myGroup = (Group) mySerializer.Deserialize(xmlReader);
xmlReader.ReadEndElement();
Console.WriteLine("The GroupName is " + myGroup.GroupName);
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " +
"files for the generated XML.");
// Close the readers.
xmlReader.Close();
reader.Close();
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
' The SoapType is overridden when the
' SerializeOverride method is called.
<SoapType("SoapGroupType", "http://www.cohowinery.com")> _
Public class Group
Public GroupName As String
Public Employees() As Employee
End Class
<SoapType("EmployeeType")> _
Public Class Employee
Public Name As String
End Class
Public class Run
Public Shared Sub Main()
Dim test As Run = New Run()
test.SerializeOriginal("SoapType.xml")
test.SerializeOverride("SoapType2.xml")
test.DeserializeObject("SoapType2.xml")
End Sub
Public Sub SerializeOriginal(filename As String )
' Create an instance of the XmlSerializer class that
' can be used for serializing as a SOAP message.
Dim mapp As XmlTypeMapping = _
(New SoapReflectionImporter()).ImportTypeMapping(GetType(Group))
Dim mySerializer As XmlSerializer = _
New XmlSerializer(mapp)
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees=New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Public Sub SerializeOverride(filename As string )
' Create an instance of the XmlSerializer class that
' uses a SoapAttributeOverrides object.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees = New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Private Function CreateOverrideSerializer() As XmlSerializer
' Create and return an XmlSerializer instance used to
' override and create SOAP messages.
Dim mySoapAttributeOverrides As SoapAttributeOverrides = _
New SoapAttributeOverrides()
Dim soapAtts As SoapAttributes = New SoapAttributes()
' Override the SoapTypeAttribute.
Dim soapType As SoapTypeAttribute = New SoapTypeAttribute()
soapType.TypeName = "Team"
soapType.IncludeInSchema = false
soapType.Namespace = "http://www.microsoft.com"
soapAtts.SoapType = soapType
mySoapAttributeOverrides.Add(GetType(Group),soapAtts)
' Create an XmlTypeMapping that is used to create an instance
' of the XmlSerializer. Then return the XmlSerializer object.
Dim myMapping As XmlTypeMapping = (New SoapReflectionImporter( _
mySoapAttributeOverrides)).ImportTypeMapping(GetType(Group))
Dim ser As XmlSerializer = New XmlSerializer(myMapping)
return ser
End Function
Public Sub DeserializeObject(filename As String)
' Create an instance of the XmlSerializer class.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Reading the file requires a TextReader.
Dim reader As TextReader = New StreamReader(filename)
' Create an XML text reader.
Dim xmlReader As XmlTextReader = New XmlTextReader(reader)
xmlReader.ReadStartElement()
' Deserialize and cast the object.
Dim myGroup As Group = CType(mySerializer.Deserialize(xmlReader), Group)
xmlReader.ReadEndElement()
Console.WriteLine("The GroupName is " + myGroup.GroupName)
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " + _
"files for the generated XML.")
' Close the readers.
xmlReader.Close()
reader.Close()
End Sub
End Class
Commenti
Creare un oggetto SoapTypeAttribute quando si esegue l'override della serializzazione di un tipo. Assegnare l'oggetto alla SoapType proprietà di un SoapAttributes oggetto e aggiungere a SoapAttributes un oggetto SoapAttributeOverrides. Per altre informazioni sull'override della serializzazione SOAP, vedere la panoramica della SoapAttributeOverrides classe.
Si applica a
SoapTypeAttribute(String)
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
Inizializza una nuova istanza della SoapTypeAttribute classe e specifica il nome del tipo XML.
public:
SoapTypeAttribute(System::String ^ typeName);
public SoapTypeAttribute(string? typeName);
public SoapTypeAttribute(string typeName);
new System.Xml.Serialization.SoapTypeAttribute : string -> System.Xml.Serialization.SoapTypeAttribute
Public Sub New (typeName As String)
Parametri
- typeName
- String
Nome del tipo XML generato XmlSerializer quando serializza l'istanza della classe e riconosce quando deserializza l'istanza della classe.
Esempio
Nell'esempio seguente viene serializzata una classe denominata Group. L'oggetto SoapTypeAttribute viene applicato alla classe con l'oggetto TypeName impostato su "SoapGroupType". Viene SoapTypeAttribute inoltre sottoposto a override, modificando in TypeName "Team". Entrambe le versioni vengono serializzate, generando due file: SoapType.xml e SoapType2.xml.
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
// The SoapType is overridden when the
// SerializeOverride method is called.
[SoapType("SoapGroupType", "http://www.cohowinery.com")]
public class Group
{
public string GroupName;
public Employee[] Employees;
}
[SoapType("EmployeeType")]
public class Employee
{
public string Name;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeOriginal("SoapType.xml");
test.SerializeOverride("SoapType2.xml");
test.DeserializeObject("SoapType2.xml");
}
public void SerializeOriginal(string filename)
{
// Create an instance of the XmlSerializer class that
// can be used for serializing as a SOAP message.
XmlTypeMapping mapp =
(new SoapReflectionImporter()).ImportTypeMapping(typeof(Group));
XmlSerializer mySerializer = new XmlSerializer(mapp);
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
public void SerializeOverride(string filename)
{
// Create an instance of the XmlSerializer class that
// uses a SoapAttributeOverrides object.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
private XmlSerializer CreateOverrideSerializer()
{
// Create and return an XmlSerializer instance used to
// override and create SOAP messages.
SoapAttributeOverrides mySoapAttributeOverrides =
new SoapAttributeOverrides();
SoapAttributes soapAtts = new SoapAttributes();
// Override the SoapTypeAttribute.
SoapTypeAttribute soapType = new SoapTypeAttribute();
soapType.TypeName = "Team";
soapType.IncludeInSchema = false;
soapType.Namespace = "http://www.microsoft.com";
soapAtts.SoapType = soapType;
mySoapAttributeOverrides.Add(typeof(Group),soapAtts);
// Create an XmlTypeMapping that is used to create an instance
// of the XmlSerializer. Then return the XmlSerializer object.
XmlTypeMapping myMapping = (new SoapReflectionImporter(
mySoapAttributeOverrides)).ImportTypeMapping(typeof(Group));
XmlSerializer ser = new XmlSerializer(myMapping);
return ser;
}
public void DeserializeObject(string filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Reading the file requires a TextReader.
TextReader reader = new StreamReader(filename);
// Create an XML text reader.
XmlTextReader xmlReader = new XmlTextReader(reader);
xmlReader.ReadStartElement();
// Deserialize and cast the object.
Group myGroup = (Group) mySerializer.Deserialize(xmlReader);
xmlReader.ReadEndElement();
Console.WriteLine("The GroupName is " + myGroup.GroupName);
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " +
"files for the generated XML.");
// Close the readers.
xmlReader.Close();
reader.Close();
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
' The SoapType is overridden when the
' SerializeOverride method is called.
<SoapType("SoapGroupType", "http://www.cohowinery.com")> _
Public class Group
Public GroupName As String
Public Employees() As Employee
End Class
<SoapType("EmployeeType")> _
Public Class Employee
Public Name As String
End Class
Public class Run
Public Shared Sub Main()
Dim test As Run = New Run()
test.SerializeOriginal("SoapType.xml")
test.SerializeOverride("SoapType2.xml")
test.DeserializeObject("SoapType2.xml")
End Sub
Public Sub SerializeOriginal(filename As String )
' Create an instance of the XmlSerializer class that
' can be used for serializing as a SOAP message.
Dim mapp As XmlTypeMapping = _
(New SoapReflectionImporter()).ImportTypeMapping(GetType(Group))
Dim mySerializer As XmlSerializer = _
New XmlSerializer(mapp)
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees=New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Public Sub SerializeOverride(filename As string )
' Create an instance of the XmlSerializer class that
' uses a SoapAttributeOverrides object.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees = New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Private Function CreateOverrideSerializer() As XmlSerializer
' Create and return an XmlSerializer instance used to
' override and create SOAP messages.
Dim mySoapAttributeOverrides As SoapAttributeOverrides = _
New SoapAttributeOverrides()
Dim soapAtts As SoapAttributes = New SoapAttributes()
' Override the SoapTypeAttribute.
Dim soapType As SoapTypeAttribute = New SoapTypeAttribute()
soapType.TypeName = "Team"
soapType.IncludeInSchema = false
soapType.Namespace = "http://www.microsoft.com"
soapAtts.SoapType = soapType
mySoapAttributeOverrides.Add(GetType(Group),soapAtts)
' Create an XmlTypeMapping that is used to create an instance
' of the XmlSerializer. Then return the XmlSerializer object.
Dim myMapping As XmlTypeMapping = (New SoapReflectionImporter( _
mySoapAttributeOverrides)).ImportTypeMapping(GetType(Group))
Dim ser As XmlSerializer = New XmlSerializer(myMapping)
return ser
End Function
Public Sub DeserializeObject(filename As String)
' Create an instance of the XmlSerializer class.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Reading the file requires a TextReader.
Dim reader As TextReader = New StreamReader(filename)
' Create an XML text reader.
Dim xmlReader As XmlTextReader = New XmlTextReader(reader)
xmlReader.ReadStartElement()
' Deserialize and cast the object.
Dim myGroup As Group = CType(mySerializer.Deserialize(xmlReader), Group)
xmlReader.ReadEndElement()
Console.WriteLine("The GroupName is " + myGroup.GroupName)
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " + _
"files for the generated XML.")
' Close the readers.
xmlReader.Close()
reader.Close()
End Sub
End Class
Commenti
Creare un oggetto SoapTypeAttribute quando si esegue l'override della serializzazione di un tipo. Assegnare l'oggetto alla SoapType proprietà di un SoapAttributes oggetto e aggiungere a SoapAttributes un oggetto SoapAttributeOverrides. Per altre informazioni sull'override della serializzazione SOAP, vedere la panoramica della SoapAttributeOverrides classe.
Si applica a
SoapTypeAttribute(String, String)
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
- Origine:
- SoapTypeAttribute.cs
Inizializza una nuova istanza della SoapTypeAttribute classe e specifica il nome e lo spazio dei nomi XML del tipo.
public:
SoapTypeAttribute(System::String ^ typeName, System::String ^ ns);
public SoapTypeAttribute(string? typeName, string? ns);
public SoapTypeAttribute(string typeName, string ns);
new System.Xml.Serialization.SoapTypeAttribute : string * string -> System.Xml.Serialization.SoapTypeAttribute
Public Sub New (typeName As String, ns As String)
Parametri
- typeName
- String
Nome del tipo XML generato XmlSerializer quando serializza l'istanza della classe e riconosce quando deserializza l'istanza della classe.
- ns
- String
Spazio dei nomi XML del tipo.
Esempio
Nell'esempio seguente viene serializzata una classe denominata Group. L'oggetto SoapTypeAttribute viene applicato alla classe con l'oggetto TypeName impostato su "SoapGroupType". Viene SoapTypeAttribute inoltre sottoposto a override, modificando in TypeName "Team". Entrambe le versioni vengono serializzate, generando due file: SoapType.xml e SoapType2.xml.
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
// The SoapType is overridden when the
// SerializeOverride method is called.
[SoapType("SoapGroupType", "http://www.cohowinery.com")]
public class Group
{
public string GroupName;
public Employee[] Employees;
}
[SoapType("EmployeeType")]
public class Employee
{
public string Name;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeOriginal("SoapType.xml");
test.SerializeOverride("SoapType2.xml");
test.DeserializeObject("SoapType2.xml");
}
public void SerializeOriginal(string filename)
{
// Create an instance of the XmlSerializer class that
// can be used for serializing as a SOAP message.
XmlTypeMapping mapp =
(new SoapReflectionImporter()).ImportTypeMapping(typeof(Group));
XmlSerializer mySerializer = new XmlSerializer(mapp);
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
public void SerializeOverride(string filename)
{
// Create an instance of the XmlSerializer class that
// uses a SoapAttributeOverrides object.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Writing the file requires a TextWriter.
TextWriter writer = new StreamWriter(filename);
// Create an XML text writer.
XmlTextWriter xmlWriter = new XmlTextWriter(writer);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.Indentation = 2;
// Create an instance of the class that will be serialized.
Group myGroup = new Group();
// Set the object properties.
myGroup.GroupName = ".NET";
Employee e1 = new Employee();
e1.Name = "Pat";
myGroup.Employees=new Employee[]{e1};
// Write the root element.
xmlWriter.WriteStartElement("root");
// Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup);
// Close the root tag.
xmlWriter.WriteEndElement();
// Close the XmlWriter.
xmlWriter.Close();
// Close the TextWriter.
writer.Close();
}
private XmlSerializer CreateOverrideSerializer()
{
// Create and return an XmlSerializer instance used to
// override and create SOAP messages.
SoapAttributeOverrides mySoapAttributeOverrides =
new SoapAttributeOverrides();
SoapAttributes soapAtts = new SoapAttributes();
// Override the SoapTypeAttribute.
SoapTypeAttribute soapType = new SoapTypeAttribute();
soapType.TypeName = "Team";
soapType.IncludeInSchema = false;
soapType.Namespace = "http://www.microsoft.com";
soapAtts.SoapType = soapType;
mySoapAttributeOverrides.Add(typeof(Group),soapAtts);
// Create an XmlTypeMapping that is used to create an instance
// of the XmlSerializer. Then return the XmlSerializer object.
XmlTypeMapping myMapping = (new SoapReflectionImporter(
mySoapAttributeOverrides)).ImportTypeMapping(typeof(Group));
XmlSerializer ser = new XmlSerializer(myMapping);
return ser;
}
public void DeserializeObject(string filename)
{
// Create an instance of the XmlSerializer class.
XmlSerializer mySerializer = CreateOverrideSerializer();
// Reading the file requires a TextReader.
TextReader reader = new StreamReader(filename);
// Create an XML text reader.
XmlTextReader xmlReader = new XmlTextReader(reader);
xmlReader.ReadStartElement();
// Deserialize and cast the object.
Group myGroup = (Group) mySerializer.Deserialize(xmlReader);
xmlReader.ReadEndElement();
Console.WriteLine("The GroupName is " + myGroup.GroupName);
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " +
"files for the generated XML.");
// Close the readers.
xmlReader.Close();
reader.Close();
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
' The SoapType is overridden when the
' SerializeOverride method is called.
<SoapType("SoapGroupType", "http://www.cohowinery.com")> _
Public class Group
Public GroupName As String
Public Employees() As Employee
End Class
<SoapType("EmployeeType")> _
Public Class Employee
Public Name As String
End Class
Public class Run
Public Shared Sub Main()
Dim test As Run = New Run()
test.SerializeOriginal("SoapType.xml")
test.SerializeOverride("SoapType2.xml")
test.DeserializeObject("SoapType2.xml")
End Sub
Public Sub SerializeOriginal(filename As String )
' Create an instance of the XmlSerializer class that
' can be used for serializing as a SOAP message.
Dim mapp As XmlTypeMapping = _
(New SoapReflectionImporter()).ImportTypeMapping(GetType(Group))
Dim mySerializer As XmlSerializer = _
New XmlSerializer(mapp)
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees=New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Public Sub SerializeOverride(filename As string )
' Create an instance of the XmlSerializer class that
' uses a SoapAttributeOverrides object.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Writing the file requires a TextWriter.
Dim writer As TextWriter = New StreamWriter(filename)
' Create an XML text writer.
Dim xmlWriter As XmlTextWriter = New XmlTextWriter(writer)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.Indentation = 2
' Create an instance of the class that will be serialized.
Dim myGroup As Group = New Group()
' Set the object properties.
myGroup.GroupName = ".NET"
Dim e1 As Employee = New Employee()
e1.Name = "Pat"
myGroup.Employees = New Employee(){e1}
' Write the root element.
xmlWriter.WriteStartElement("root")
' Serialize the class.
mySerializer.Serialize(xmlWriter, myGroup)
' Close the root tag.
xmlWriter.WriteEndElement()
' Close the XmlWriter.
xmlWriter.Close()
' Close the TextWriter.
writer.Close()
End Sub
Private Function CreateOverrideSerializer() As XmlSerializer
' Create and return an XmlSerializer instance used to
' override and create SOAP messages.
Dim mySoapAttributeOverrides As SoapAttributeOverrides = _
New SoapAttributeOverrides()
Dim soapAtts As SoapAttributes = New SoapAttributes()
' Override the SoapTypeAttribute.
Dim soapType As SoapTypeAttribute = New SoapTypeAttribute()
soapType.TypeName = "Team"
soapType.IncludeInSchema = false
soapType.Namespace = "http://www.microsoft.com"
soapAtts.SoapType = soapType
mySoapAttributeOverrides.Add(GetType(Group),soapAtts)
' Create an XmlTypeMapping that is used to create an instance
' of the XmlSerializer. Then return the XmlSerializer object.
Dim myMapping As XmlTypeMapping = (New SoapReflectionImporter( _
mySoapAttributeOverrides)).ImportTypeMapping(GetType(Group))
Dim ser As XmlSerializer = New XmlSerializer(myMapping)
return ser
End Function
Public Sub DeserializeObject(filename As String)
' Create an instance of the XmlSerializer class.
Dim mySerializer As XmlSerializer = CreateOverrideSerializer()
' Reading the file requires a TextReader.
Dim reader As TextReader = New StreamReader(filename)
' Create an XML text reader.
Dim xmlReader As XmlTextReader = New XmlTextReader(reader)
xmlReader.ReadStartElement()
' Deserialize and cast the object.
Dim myGroup As Group = CType(mySerializer.Deserialize(xmlReader), Group)
xmlReader.ReadEndElement()
Console.WriteLine("The GroupName is " + myGroup.GroupName)
Console.WriteLine("Look at the SoapType.xml and SoapType2.xml " + _
"files for the generated XML.")
' Close the readers.
xmlReader.Close()
reader.Close()
End Sub
End Class
Commenti
Creare un oggetto SoapTypeAttribute quando si esegue l'override della serializzazione di un tipo. Assegnare l'oggetto alla SoapType proprietà di un SoapAttributes oggetto e aggiungere a SoapAttributes un oggetto SoapAttributeOverrides. Per altre informazioni sull'override della serializzazione SOAP, vedere la panoramica della SoapAttributeOverrides classe.
Se si imposta un Namespace valore per più di un tipo , ovvero se si applica l'attributo a più classi con un valore diverso Namespace per ognuno di essi, lo strumento di definizione dello schema XML (Xsd.exe) genera un file di schema separato (con estensione xsd) per ogni tipo. Ciò è dovuto al fatto che l'impostazione di uno spazio dei nomi diverso per ogni tipo esegue il rendering di ogni tipo distinto dagli altri, rendendo quindi necessario che ogni tipo venga scritto come entità indipendente.