WCF技术内幕 第5章 (2)
XMLDictionaryWriter类型
XMLDictionaryWriter类型是用来序列化和编码Message类型的。
创建XmlDictionaryWriter对象
CreateDictionaryWriter
using (MemoryStream stream = new MemoryStream()) { using (XmlDictionaryWriter xtw = XmlDictionaryWriter.CreateBinaryWriter(stream)) { xtw.WriteStartDocument(); xtw.WriteStartElement("AndersProfix", "AndersName", "AndersNameSpace"); xtw.WriteStartElement("AndersProfix", "Person", "AndersNameSpace"); xtw.WriteAttributeString("Name", "Mike"); xtw.WriteAttributeString("Year", "3"); xtw.WriteEndElement(); xtw.WriteEndElement(); xtw.WriteEndDocument(); xtw.Flush(); Console.WriteLine("XmlDictionaryWriter wrote {0} bytes", stream.Position); //99 stream.Position = 0; Byte[] bytes = stream.ToArray(); File.WriteAllText(@"c:\file.txt", BitConverter.ToString(bytes)); //41-0C-41-6E-64-65-72-73-50-72-6F-66-69-78-0A-41-6E-64-65-72-73-4E-61-6D-65-09-0C-41 //-6E-64-65-72-73-50-72-6F-66-69-78-0F-41-6E-64-65-72-73-4E-61-6D-65-53-70-61-63-65-4 //1-0C-41-6E-64-65-72-73-50-72-6F-66-69-78-06-50-65-72-73-6F-6E-04-04-4E-61-6D-65-98- //04-4D-69-6B-65-04-04-59-65-61-72-98-01-33-01-01 File.WriteAllText(@"c:\file1.txt", new StreamReader(stream).ReadToEnd()); //AAndersProfix //AndersNameAndersProfixAndersNameSpaceAAndersProfixPersonName?MikeYear?3 } }