首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

WCF技术黑幕 第5章 (4)

2013-01-26 
WCF技术内幕 第5章 (4)XMLDictionaryReader类型XmlDictionaryReader是为了读取序列化的和编码过的XML Info

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();        }

此时需要注意的是XmlDictionaryWriter与XmlDictionaryReader使用的是同一XmlDictionary对象。


热点排行