jjzjj

DataContractSerializer

全部标签

c# - 什么时候应该使用 XML 序列化?

我一直在阅读有关XML序列化的文章,据我了解,这是一种获取对象并将状态保存在文件中的方法。至于实现,它看起来很直接,而且似乎有大量资源可以应用它。什么时候应该使用XML序列化?有什么好处?使用它最能帮助哪些情况? 最佳答案 .NETXmlSerializer类并不是将对象保存到XML的唯一方法。较新的DataContractSerializer速度更快,并且还允许将对象持久化为二进制形式的XML,这样更加紧凑。XmlSerializer这些天只修复了有限的错误,部分原因是太多代码依赖于它如何工作的精确细节,部分原因是它与ASMX网络

.net - 使用 DataContractSerializer 在 WCF 中序列化和反序列化 XmlDocument

我有一个WCF服务,它接受一个字符串作为其操作契约(Contract)之一的参数。但是,此字符串中包含xml内容。我需要将其转换为标记为DataContract但不向外界公开的类。我需要使用DataContractSerializer,因为类成员的[DataMember]属性设置为不同的名称。例如:属性Phone的DataMemberName设置为"Telephone",因此当我使用普通序列化程序反序列化xmldocument时,我在反序列化程序查找Phone元素不存在。如何使用DataContractSerializer反序列化XmlDocument?不过,一个限制是我无法将xmld

c# - DataContractSerializer 不反序列化所有变量

我试图在没有用于在xml中创建对象的原始类的情况下反序列化一些xml。该类称为ComOpcClientConfiguration。它成功地设置了ServerUrl和ServerUrlHda值,但没有设置其余值...所以我要问的是:我怎样才能正确设置这些值的其余部分,为什么它们不能使用我当前的代码。这是我的反序列化代码:conf是一个XElement,代表ComClientConfigurationxmlDataContractSerializerser=newDataContractSerializer(typeof(ComClientConfiguration),newType[]{

c# - 具有最大字符数的 System.Double 值

我正在测试double[]数组的netxml序列化,所以我很想知道它被序列化的字符最多的double值是多少,这样我就可以测试最大输出大小是多少序列化数组。 最佳答案 应该是24。double.MinValue.ToString("R").Length来自double.ToString(string)or"R",whichreturns15digitsifthenumbercanberepresentedwiththatprecisionor17digitsifthenumbercanonlyberepresentedwithmax

c# - 如何序列化基类型的集合并在易于阅读的 XML 中查看具体类型

我有一个列表,其中填充了各种具体类型的对象,这些对象是BaseType的子类我正在使用WCFDataContractSerializer有什么办法让它生成?真正的目标是让用户生成一些XML以加载到内存中,而用户的技能水平要求他们提供原始XML是不会成功的。 最佳答案 DataContractSerializer并非旨在让您控制输出。它被设计为快速、隐式且易于归因于一个类。您需要的是XmlSerializer。这使您可以更好地控制XML输出。请注意,在我下面的示例中,我指定了很多可以从属性名称中推断出来的东西,但这只是为了让您觉得您可

.net - 如何在 Xml 序列化、DataContractSerializer 和 LINQ to XML 之间进行选择以序列化简单对象树?

我需要将一棵简单对象树作为XML序列化到文件中或从文件中序列化——自从我上次不得不这样做以来,世界已经发生了变化……(我不关心XML的模式,只要支持人员可以在需要时理解该文件)那么,在.net中的不同“easyxml”API之间进行选择时,需要考虑哪些权衡? 最佳答案 这就是我思考这些选项的方式:LINQtoXML–完全控制XML和对象的设计,3个选项中代码最多的选项。DataContractSerializer–对XML的控制很少或没有,可以处理大多数对象XmlSerializer–完全控制XML,但您必须以Xml序列化喜欢的方式

c# - 避免将 “http://www.w3.org/2001/XMLSchema-instance” 命名空间与 .Net DataContractSerializer 一起使用

我有一系列类,我正在使用.NET4.0中的.NETDataContractSerializer将它们转换为XML。序列化工作正常,我可以毫无困难地解析XML并稍后重新创建.NET对象。但是,大多数DataMember不是必需的。[数据成员(IsRequired=false)]。这在反序列化XML时效果很好,在那里您可能会错过文档中的XML节点,但是当将现有对象序列化为XML时,DataContractSerializer坚持写出具有空值的属性作为具有属性的节点,例如[DataContract(Name="response",Namespace="http://domain.com/na

c# - DataContractSerializer 如何写入私有(private)字段?

我了解XMLSerializer如何通过使用反射来确定应该使用哪些公共(public)读/写字段或属性来序列化或反序列化XML。然而XMLSerializer要求字段是公共(public)的和可读/写的。但是,DataContractSerializer能够读取或写入类中完全私有(private)的字段。所以我想知道如果不显式授予DataContractSerializer对我的类的额外访问权限,这怎么可能。 最佳答案 反射有很多特点。XmlSerializer通过“sgen.exe”能够将序列化代码预构建为二进制文件(dll)。这

c# - 继承类的无效输出

我有两个类(class)[DataContract,KnownType(typeof(B))]publicclassA{[DataMember]publicstringprop1{get;set;}[DataMember]publicstringprop2{get;set;}[DataMember]publicstringprop3{get;set;}}[DataContract]publicclassB:A{[DataMember]publicstringprop4{get;set;}}和以下方法:ListBList=newList();BList=newList(){newB(){

c# - 具有多个命名空间的 DataContractSerializer

我正在使用DataContractSerializer将对象序列化为XML。主要对象是具有命名空间“http://personaltrading.test.com/”的SecurityHolding并包含一个名为Amount的属性,该属性是一个具有命名空间“http://core.test.com”的类。当我将其序列化为XML时,我得到以下信息:1.05USD03681无论如何我可以控制d3p1前缀吗?我做错了什么还是应该做其他事情? 最佳答案 首先,namespace别名的选择对格式良好的解析器应该没有影响。但是;它必须是Data