SoapTypeAttribute.Namespace 属性

定义

获取或设置 XML 类型的命名空间。

public:
 property System::String ^ Namespace { System::String ^ get(); void set(System::String ^ value); };
public string? Namespace { get; set; }
public string Namespace { get; set; }
member this.Namespace : string with get, set
Public Property Namespace As String

属性值

XML 类型的命名空间。 默认值为空字符串("")。

示例

以下示例序列化名为 的 Group类。 将 SoapTypeAttribute 应用于设置为“SoapGroupType”的 类 TypeNameSoapTypeAttribute还会重写 ,将 更改为TypeName“Team”。 这两个版本都已序列化,生成两个文件:SoapType.xml 和 SoapType2.xml。

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

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;

[SoapType("EmployeeType")]
public ref class Employee
{
public:
   String^ Name;
};


// The SoapType is overridden when the
// SerializeOverride  method is called.

[SoapType("SoapGroupType","http://www.cohowinery.com")]
public ref class Group
{
public:
   String^ GroupName;
   array<Employee^>^Employees;
};

public ref class Run
{
public:
   void SerializeOriginal( String^ filename )
   {
      // Create an instance of the XmlSerializer class that
      // can be used for serializing as a SOAP message.
      XmlTypeMapping^ mapp = (gcnew SoapReflectionImporter)->ImportTypeMapping( Group::typeid );
      XmlSerializer^ mySerializer = gcnew XmlSerializer( mapp );

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

      // Create an XML text writer.
      XmlTextWriter^ xmlWriter = gcnew XmlTextWriter( writer );
      xmlWriter->Formatting = Formatting::Indented;
      xmlWriter->Indentation = 2;

      // Create an instance of the class that will be serialized.
      Group^ myGroup = gcnew Group;

      // Set the Object* properties.
      myGroup->GroupName = ".NET";
      Employee^ e1 = gcnew Employee;
      e1->Name = "Pat";
      myGroup->Employees = gcnew array<Employee^>(1);
      myGroup->Employees[ 0 ] = 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();
   }

   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 = gcnew StreamWriter( filename );

      // Create an XML text writer.
      XmlTextWriter^ xmlWriter = gcnew XmlTextWriter( writer );
      xmlWriter->Formatting = Formatting::Indented;
      xmlWriter->Indentation = 2;

      // Create an instance of the class that will be serialized.
      Group^ myGroup = gcnew Group;

      // Set the Object* properties.
      myGroup->GroupName = ".NET";
      Employee^ e1 = gcnew Employee;
      e1->Name = "Pat";
      myGroup->Employees = gcnew array<Employee^>(1);
      myGroup->Employees[ 0 ] = 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();
   }

   void DeserializeObject( String^ filename )
   {
      // Create an instance of the XmlSerializer class.
      XmlSerializer^ mySerializer = CreateOverrideSerializer();

      // Reading the file requires a TextReader.
      TextReader^ reader = gcnew StreamReader( filename );

      // Create an XML text reader.
      XmlTextReader^ xmlReader = gcnew XmlTextReader( reader );
      xmlReader->ReadStartElement();

      // Deserialize and cast the object.
      Group^ myGroup;
      myGroup = dynamic_cast<Group^>(mySerializer->Deserialize( xmlReader ));
      xmlReader->ReadEndElement();
      Console::WriteLine( "The GroupName is {0}", myGroup->GroupName );
      Console::WriteLine( "Look at the SoapType.xml and SoapType2.xml "
      "files for the generated XML." );

      // Close the readers.
      xmlReader->Close();
      reader->Close();
   }

private:
   XmlSerializer^ CreateOverrideSerializer()
   {
      // Create and return an XmlSerializer instance used to
      //  and create SOAP messages.
      SoapAttributeOverrides^ mySoapAttributeOverrides = gcnew SoapAttributeOverrides;
      SoapAttributes^ soapAtts = gcnew SoapAttributes;

      // Override the SoapTypeAttribute.
      SoapTypeAttribute^ soapType = gcnew SoapTypeAttribute;
      soapType->TypeName = "Team";
      soapType->IncludeInSchema = false;
      soapType->Namespace = "http://www.microsoft.com";
      soapAtts->SoapType = soapType;
      mySoapAttributeOverrides->Add( Group::typeid, soapAtts );

      // Create an XmlTypeMapping that is used to create an instance 
      // of the XmlSerializer. Then return the XmlSerializer Object*.
      XmlTypeMapping^ myMapping = (gcnew SoapReflectionImporter( mySoapAttributeOverrides ))->ImportTypeMapping( Group::typeid );
      XmlSerializer^ ser = gcnew XmlSerializer( myMapping );
      return ser;
   }
};

int main()
{
   Run^ test = gcnew Run;
   test->SerializeOriginal( "SoapType.xml" );
   test->SerializeOverride( "SoapType2.xml" );
   test->DeserializeObject( "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

注解

如果为多个类型 (设置一个 Namespace 值,也就是说,如果将 属性应用于具有不同 Namespace 值) 的多个类, 则 XML 架构定义工具 (Xsd.exe) 将为每个类型生成单独的架构文件 (.xsd) 。 这是因为为每个类型设置不同的命名空间会使每个类型呈现不同于其他类型,因此需要将每个类型写成独立的实体。

适用于