WCF技术内幕 第5章 (4)
XMLDictionaryReader类型
XmlDictionaryReader是为了读取序列化的和编码过的XML Infosets,并且可以有选择性地借助XmlDictionary来实现语义压缩的反向处理。
XmlDictionaryQuotas类型是一个状态容器,用来定义与XML反序列化相关的重要阀值。
OnXmlDictionaryReaderClose委托在XmlDictionaryReader的Close方法结束时调用。
using (MemoryStream stream = new MemoryStream()) { XmlDictionary xd = new XmlDictionary(); List<XmlDictionaryString> stringList = new List<XmlDictionaryString>(); stringList.Add(xd.Add("Person")); stringList.Add(xd.Add("urn:Andersoft")); using (XmlDictionaryWriter xtw = XmlDictionaryWriter.CreateBinaryWriter(stream, xd, null)) { xtw.WriteElementString(stringList[0], stringList[1], "Mike"); xtw.Flush(); stream.Position = 0; using (XmlDictionaryReader xdr = XmlDictionaryReader.CreateBinaryReader( stream, xd, //同一个XmlDictionary对象这里!!!! quotas: new XmlDictionaryReaderQuotas(), //阀值 session: null, onClose: delegate { Console.WriteLine("closing reader..."); })) //onClose委托 { xdr.MoveToContent(); File.WriteAllText(@"c:\file.txt", xdr.ReadOuterXml()); //<Person xmlns="urn:Andersoft">Mike</Person> Console.WriteLine("prepare to close reader..."); } Console.WriteLine("reader was closed..."); //prepare to close reader... //closing reader... //reader was closed... } } Console.ReadKey(); }