快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门新葡亰城官网app:《WCF技术内幕》翻译22:第2部分第5章消息:XmlDictionaryWriter



(概述:这一部分先容了XmlDictionaryWriter类型的相关观点:若何创建,应用一个工具,然后讲述了若何进行Text、二进制和MTOM编码。着末先容了XmlDictionary的感化【老徐备注2】,已经各类编码的效率问题。你会懂得为WCF支持的几种编码款式的基滥觞基本理。)

XmlDictionaryWriter

XmlDictionaryWriter类型为Message类型的序列化和编码的。它承袭自System.Xml.XmlWriter,是以承袭了很多XmlWriter 的属性。像XmlWriter一样,XmlDictionaryWriter也是抽象类型,它定义了几个返回XmlDictionaryWriter子类型实例的措施,包装了System.IO.Stream并且定义了许多以Write单词开始的措施。在感化上,法度榜样里应用 XmlDictionaryWriter和XmlWriter在观点上十分相似。

与XmlWriter不合,XmlDictionaryWriter类型的目的是序列化和编码Message工具,并且无意偶尔会应用XmlDictionary工具处置惩罚压缩事情。为了这一目的,XmlDictionaryWriter 类型定义澳门新葡亰城官网app了一些与XmlWriter不合的成员。让我们经由过程钻研这些成员来具体懂得一下XmlDictionaryWriter类型。首先我们会反省一下 XmlDictionaryWriter的构造函数,然后看看若何经由澳门新葡亰城官网app过程Stream序列化和编码XML数据。

创建一个XmlDictionaryWriter工具

XmlDictionaryWriter定义了几个工厂措施,并且它们都直接或者间接地吸收System.IO.Stream工具的引用。这些措施大年夜部分是重载一下4个措施:CreateDictionaryWriter、CreateTextWriter、CreateMtomWriter和CreateBinaryWriter。

Creat澳门新葡亰城官网appeDictionaryWriterXmlDictionaryWriter 类型上的工厂措施CreateDictionaryWriter 此中之一便是吸收一个XmlWriter类型的引用。内部来说,这些措施返回的实例都是简单地包装了通报的参数XmlWriter。是以,这些措施用场不大年夜,除了某些API里必要XmlDictionaryWriter类型的时刻。比如,你可能要掉落澳门新葡亰城官网app也难怪一个吸收XmlDictionaryWriter类型参数的措施,然则你只有一个XmlWriter类型的局部变量。要是这样的话,你可以经由过程调用CreateDictionaryWriter工厂措施,通报XmlWriter参数,从XmlWriter创建XmlDictionaryWriter工具,代码如下:

MemoryStream stream = new MemoryStream();

XmlWriter xmlWriter = XmlWriter.Create(stream);

XmlDictionaryWriter writer = XmlDictionaryWriter.CreateDictionaryWriter(xmlWriter);

CreateTextWriterXmlDictionaryWriter类型定义了三个工厂措施。这些工厂措施返回的是承袭自XmlDictionaryWriter类型的实例,并且它们的感化是为了孕育发生基于文本编码的XML。所有的三个措施都吸收Stream类型的参数。两个措施吸收一个Stream参数和一个 System.Text.Encoding类型的参数。一个措施吸收一个Stream类型、一个Encoding和一个Boolean类型的参数。 Encoding参数,如你所期望的,设置处置惩罚Stream时刻的编码款式。虽然有很多编码款式,然则CreateTextWriter措施只支持三种编码款式:UTF-8 、Unicode (UTF-16) little-endian和big-endian要领。假如不选择的话,默认应用UTF-8编码。Boolean参数表示 XmlDictionaryWriter是否拥有这个Stream工具。假如为true, 调用XmlDictionaryWriter上的Close 和Dispose措施,也会调用Stream工具的Close措施,是以能够阻拦对Stream 的后续造访。假如没有设置的话,默觉得true.下面的代码演示了若何应用CreateTextWriter措施:

MemoryStream stream = new MemoryStream();

using (XmlDictionaryWriter writer =

XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false)) {

writer.Wri澳门新葡亰城官网appteStartDocument();

writer.WriteElementString("SongName",

"urn:ContosoRockabilia",

"Aqualung");

writer.Flush();

}

Console.WriteLine("XmlDictionaryWriter (Text-UTF8) wrote {0} bytes",

stream.Position);

stream.Position = 0;

Byte[] bytes = stream.ToArray();

Console.WriteLine(BitConverter.ToString(bytes));

Console.WriteLine("data read from stream:\n{0}\n",

new StreamReader(stream).ReadToEnd());

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: