对象序列化图
Message message1 = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "urn:SomeAction", "Hello Anders~");
Console.WriteLine(message1.ToString());
//<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
// <s:Header>
// <a:Action s:mustUnderstand="1">urn:SomeAction</a:Action>
// </s:Header>
// <s:Body>
// <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hello Anders~</string>
// </s:Body>
//</s:Envelope>
Console.ReadKey();
class Program
{
static void Main()
{
Person personF = new Person() { Name = "Anders.F" };
Person personM = new Person() { Name = "Anders.M" };
Person person = new Person() { Name = "Anders", father = personF, mother = personM };
Message message1 = Message.CreateMessage(MessageVersion.Soap12WSAddressing10, "urn:SomeAction", person);
Console.WriteLine(message1.ToString());
//<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
// <s:Header>
// <a:Action s:mustUnderstand="1">urn:SomeAction</a:Action>
// </s:Header>
// <s:Body>
// <Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/XMLDictionaryWriter">
// <_x003C_Name_x003E_k__BackingField>Anders</_x003C_Name_x003E_k__BackingField>
// <_x003C_father_x003E_k__BackingField>
// <_x003C_Name_x003E_k__BackingField>Anders.F</_x003C_Name_x003E_k__BackingField>
// <_x003C_father_x003E_k__BackingField i:nil="true" />
// <_x003C_mother_x003E_k__BackingField i:nil="true" />
// </_x003C_father_x003E_k__BackingField>
// <_x003C_mother_x003E_k__BackingField>
// <_x003C_Name_x003E_k__BackingField>Anders.M</_x003C_Name_x003E_k__BackingField>
// <_x003C_father_x003E_k__BackingField i:nil="true" />
// <_x003C_mother_x003E_k__BackingField i:nil="true" />
// </_x003C_mother_x003E_k__BackingField>
// </Person>
// </s:Body>
//</s:Envelope>
}
}
//Person类必须被标记为可序列化
[Serializable]
class Person
{
public Person father { get; set; }
public Person mother { get; set; }
public string Name { get; set; }
}
从Reader提取数据