Tag: xml serialization

序列化使用内部修饰符声明的类的List ?

我正在尝试将XML序列化添加到C#中相当简单的类结构中。 本质上,有一个根类的实例(称为AClass),它包含一些其他类的几个实例的List(称之为AnotherClass): [XmlRoot(“RootNode”)] public class AClass { [XmlElement(“ListNode”)] internal List otherObjects { get; set; } } public class AnotherClass { [XmlAttribute(“Name”)] internal string name { get; set; } } 在序列化时,我希望将这两个类序列化在一起 – 也就是说,如果我序列化了AClass,它的AnotherClass列表也会被序列化(请参阅此问题 )。 我有这个主要工作,但问题是在序列化期间,XmlSerializer似乎只想处理类的public属性 – 如果列表被声明为internal它根本不会序列化AnotherClass。 我尝试使程序集的内部对序列化程序可见: [assembly: System.Runtime.CompilerServices.InternalsVisibleTo(“System.Xml”)] 这似乎没有做任何事情。 有没有办法让XmlSerializer递归序列化内部声明的对象列表?

深度xml序列化结构选项

我有下面显示的类和结构。 如果我使用xmlserializer序列化类,我得到: 5 什么是最简单的方法使InnerTest序列化正确(最好使用xmlserializer)而不给Number属性一个setter? 谢谢,尼克 public class Test { private InnerTest innerTest; private int testNumber; public Test() { this.innerTest = new InnerTest(); this.testNumber = 5; } public int TestNumber1 { get { return this.testNumber; } set { this.testNumber = value;} } public InnerTest InnerTest { get { return this.innerTest; } set { this.innerTest = value;} […]

XmlSerializer的。 跳过xml未知节点

我的xml文件反序列化有问题。 让我们假设我们有一个xml文件和一个我们用于反序列化的类。 例如: xml – newDataStore1 sdffasdfasdf Shapefile false newTestWorkspace false true ISO-8859-1 shapefile true file:data/shapefiles/states.shp http://www.opengeospatial.net/cite false 类 namespace GeoServerApiTester { /// [System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”, “4.0.30319.225”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlRootAttribute(“dataStore”, Namespace=””, IsNullable=false)] public partial class DataStore { private string nameField; private string typeField; private bool enabledField; private WorkSpacePreview workspaceField; private ConnectionParametersStorageEntryCollection connectionParametersField; private string @__defaultField; private […]

如何使用无参数构造函数XML序列化密封类?

我目前正在使用XMLSerializer来序列化我自己的类的列表。 类的一个属性是一个没有无参数构造函数的密封类的实例,因此XML Serializer拒绝序列化该类。 我怎么能绕过这个? 我需要将该属性序列化。 有什么方法可以指定该类应该如何序列化? 我们想继续使用XML; 是否有另一个我可以使用的XML序列化器没有这个问题? 我再次道歉,如果这是一个骗局,但我不知道该搜索什么。 [编辑]为了澄清,我无法访问密封类的来源。

如何在C#中将XML元素反序列化为具有属性和文本的元素数组?

我在尝试反序列化这个XML时遇到问题: http://abc.co.uk http://ebay.co.uk http://stackoverflow.com 使用代码: [XmlRoot(“links”)] public class LinksInterface { [XmlElement(“link”)] public List Links; public class LinkElement { [XmlAttribute(“title”)] public string Title; [XmlText] // This bit is the troublesome bit! public LinkElement Link; } } 基本上,我需要将元素的文本内容放入Links.Link但我正在尝试的属性[XmlText]不提供我期望的行为,我得到错误: 反映字段’链接’时出错。 。 如果有人能够指出我的方式的错误,我将非常感激! 谢谢。

XmlSerializer.Deserialize()未正确反序列化List

我是C#XmlSerializer的新手,所以我可能会遗漏一些基本的东西。 我遇到的问题是我有一个类有另一个类的List 。 当我序列化主类时,XML看起来很漂亮,所有数据都完好无损。 当我反序列化XML时, List的数据消失了,我留下了一个空的List 。 我没有收到任何错误,序列化部分就像魅力一样。 反序列化过程中我错过了什么? 编辑:请注意,下面显示的代码不能重现问题 – 它的工作原理。 这是真实代码的简化版本,但不起作用。 不幸的是,下面的代码已经足够简化,无法重现问题! public class User { public User() { this.Characters = new List(); } public string Username { get; set; } public List Characters { get; set; } } public class Character { public Character() { this.Skills = new List(); } public string […]

如何在C#中覆盖反序列化

我有一个课程,随着时间的推移会经历一些版本的变化。 作为我的应用程序启动的一部分,来自此类内部的数据被序列化和反序列化。 我遇到的问题是,如果我通过添加更多属性来更新类,然后启动应用程序,旧数据将无法正确加载。 我想要做的是覆盖反序列化步骤,我不介意从xml手动重建对象,因为我有一个版本号存储,可以用它来递归更新对象的版本。 是否有我可以实现的接口,或者我可以在某处设置的属性,以便能够执行此操作? 如果你想不出办法做我想做的事,那还有其他选择吗? 例如我正在加载的xml版本中可能不存在的属性的默认值。

XmlReader.ReadString是否已弃用或已过时?

我想要使​​用System.Xml.XmlReader.ReadString() ,但我注意到它没有出现在Intellisense中,因为该函数是用[EditorBrowsable(EditorBrowsableState.Never)] 。 尽管没有被标记为[Obsolete] ,但我认为微软不希望我使用它。 我在MSDN上找不到这个。 我该怎么用呢? 在ILSpy中,我看到ReadElementContentAsString()和ReadContentAsString() 。 这是我想要使用的吗? 我正在使用.Net 4.5。 如果它是相关的,这个问题是由这个答案提示的: https : //stackoverflow.com/a/625463/47589

XML序列化 – XmlCDataSection为Serialization.XmlText

我在使用c#序列化cdata部分时遇到问题 我需要将XmlCDataSection对象属性序列化为元素的innertext。 我要找的结果是这样的: <![CDATA[hello world]]> 为了产生这个,我使用这个对象: public class Test { [System.Xml.Serialization.XmlText()] public XmlCDataSection value { get; set; } [System.Xml.Serialization.XmlAttributeAttribute()] public string value2 { get; set; } } 在value属性上使用xmltext注释时,将引发以下错误。 System.InvalidOperationException:反映属性’value’时出错。 —> System.InvalidOperationException:无法序列化System.Xml.XmlCDataSection类型的成员’value’。 XmlAttribute / XmlText不能用于编码复杂类型 如果我注释掉注释,序列化将起作用,但cdata部分被放入一个值元素,这对我想要做的事情没有好处: <![CDATA[hello world]]> 任何人都可以指出我正确的方向让这个工作。 谢谢,亚当

XML序列化:反序列化抽象属性的问题

我仍然试图围绕整个xml序列化事物包围我的脑子,看起来我又需要一些帮助了。 我需要能够反序列化抽象类型的属性。 这种类型将随着时间的推移而添加许多不同的具体类型,并且在许多不同的模型中被引用,因此明确列出每种具体类型并不是理想的解决方案。 我已经阅读了XML序列化和inheritance类型线程,并提出了以下内容: ** namespace TestService { public class Page { [XmlElement(“introCommand”, Type = typeof(XmlCommandSerializer))] //[XmlElement(typeof(PlayElement))] **NOTE: the example works if I use this instead public AbstractCommandModel introCommand; } } ** namespace TestService { public class AbstractCommandModel { } } ** namespace TestService { public class PlayElement : AbstractCommandModel { } } ** namespace […]