草庐IT

XMLSerializer

全部标签

.net - .NET XmlSerializer 类可以将 InnerXml 反序列化为字符串吗?

我有一个非常具体的反序列化需求,请参见下面的示例:假设我有以下类(class):[Serializable]publicclassPerson{publicstringName{get;set;}publicstringPersonXml{get;set;}}和以下XMLJohntext我想要的是XmlSerializer类将元素的InnerXml作为字符串反序列化为PersonXml属性。我想知道是否可以做到。注意:我知道我可以对的内容进行编码以转义非法XML字符,但我更愿意让内部XML更加人性化(不包含 最佳答案 您始终可以实现

c# - 如何在反序列化之前区分 XML 文件的类型?

我正在将MusicXML文件加载到我的程序中。问题:有两种“方言”,timewise和partwise,它们具有不同的根节点(和不同的结构):......和......到目前为止,我用于反序列化部分分数的代码是:using(varfileStream=newFileStream(openFileDialog.FileName,FileMode.Open)){varxmlSerializer=newXmlSerializer(typeof(ScorePartwise));varresult=(ScorePartwise)xmlSerializer.Deserialize(fileStre

c# - 保存文件 - xmlSerializer

我正在创建一种使用以下代码序列化文件的方法:publicvoidSave(Objectfile,Typetype,Stringpath){//CreateanewSerializerXmlSerializerserializer=newXmlSerializer(typeof(type));//CreateanewStreamWriterStreamWriterwriter=newStreamWriter(@path);//Serializethefileserializer.Serialize(writer,file);//Closethewriterwriter.Close();}

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

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

c# - XmlSerializer 是否会转义 & 等特殊字符?

我正在尝试重构一个将其对象作为XML传输的库。虽然我认为.NETFramework的XmlSerialzer可以处理序列化,但该类都有一个ToXML函数。在其中,所有字符串值都通过一个转义字符的函数喜欢和相似。XmlSerializer不会自动转义那些a字符吗? 最佳答案 是的。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Xml.Serialization;usingSystem.Xml;namespaceTestXmlSerial

c# - 如何使类反序列化为不同的名称

例如:将很好地序列化到一个名为“apple”的类。但是,如果我想将该类称为“Dragon”,它将不会序列化(这是有道理的)。我想知道如何标记“Dragon”,以便当XmlSerializer看到它时,它知道“Dragon”与 最佳答案 假设Dragon至少定义了apple所做的属性和字段的超集,那么competent_tech的回答是合适的,尽管我认为您的问题实际上是在问:[System.Xml.Serialization.XmlType("apple")]publicclassDragon如果Dragon不与apple兼容,那么您

c# - 如何使用默认命名空间反序列化 xml?

我正在尝试反序列化由内部系统之一生成的Atomxml。但是,当我尝试时:publicstaticMyTypeFromXml(stringxml){XmlSerializerserializer=newXmlSerializer(typeof(MyType));return(MyType)serializer.Deserialize(newStringReader(xml));}它在命名空间的定义上抛出一个异常:System.InvalidOperationException:wasnotexpected.当我将命名空间添加到XmlSerializer的构造函数时,我的对象完全是空的:p

c# - 可序列化字典,如何设置键名?

问题:我使用一个可序列化的字典类,在http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx,序列化字典。哪个工作正常,但我遇到了一个烦人的问题。_PublicClasscDataBase_PublicnsAsNewSystem.Xml.Serialization.XmlSerializerNamespaces()_PublicTables1AsNewSerializableDictionary(OfString,cTable)EndClass'cDataBase当我像这样序列化上述类的实例时,创建的xml如下所示:

c# - XmlSerializer + 抽象类 + 派生类 = 无用的命名空间

我关于SO的第一个问题:,)是关于XmlSerializer和命名空间问题。我知道已经有很多关于如何从Xml文件的根元素中删除默认Xml命名空间的主题,这不是主题。我的问题是如何在使用派生类时将其从子节点中删除?我已经创建了我自己的序列化程序,它可以采用自定义命名空间或简单地忽略它们,并且它对根元素运行良好。但是当我使用抽象类在List中列出一些派生类时,序列化会在每个派生类的节点中插入2个属性。像这样:至于我的类(class)://Rootelement[XmlRoot("root",Namespace="")]publicclassXmlRootElement{List_Eleme

c# - 如何使用 XmlSerializer 在 C# 中反序列化期间将 xml 属性转换为自定义对象

我明白了InvalidCastException:Valueisnotaconvertibleobject:System.StringtoIdTag尝试反序列化xml属性时。这是示例xml:示例类:publicclassItem{[XmlAttribute]publicstringName{get;set;}[XmlAttribute]publicIdTagParentId{get;set;}}[Serializable]publicclassIdTag{publicstringid;}异常是从Convert.ToType()方法(从XmlSerializer调用)中抛出的。据我所知,