Questions tagged «xml-serialization»

该标签指的是使用XML作为数据格式的序列化技术。

5
为什么没有setter的属性未序列化
我有一个可序列化的类,并且该类中的一个属性在Guidgetter中生成一个。该属性没有实现设置程序,在序列化过程中将被忽略。这是为什么,我总是必须实现一个setter才能序列化我的属性。 [Serializable] public class Example { [XmlAttribute("id")] public string Id { get { return Guid.NewGuid().ToString(); } } } 我尝试实现一个空的setter,它已正确序列化。 [Serializable] public class Example { [XmlAttribute("id")] public string Id { get { return Guid.NewGuid().ToString(); } set {} } } 更新: 您能否指出我该如何定义其值永远不变或内部生成值的属性?

6
使用StringWriter进行XML序列化
我目前正在寻找一种简单的方法来序列化对象(在C#3中)。 我在Google上搜索了一些示例,并提出了类似的内容: MemoryStream memoryStream = new MemoryStream ( ); XmlSerializer xs = new XmlSerializer ( typeof ( MyObject) ); XmlTextWriter xmlTextWriter = new XmlTextWriter ( memoryStream, Encoding.UTF8 ); xs.Serialize ( xmlTextWriter, myObject); string result = Encoding.UTF8.GetString(memoryStream .ToArray()); 阅读了这个问题后,我问自己,为什么不使用StringWriter?似乎容易得多。 XmlSerializer ser = new XmlSerializer(typeof(MyObject)); StringWriter writer = new StringWriter(); ser.Serialize(writer, myObject); …


11
检查对象是否为C#中的数字
我想检查的对象是一个数字,这样.ToString()会导致包含数字和字符串+,-,. 是否可以通过.net中的简单类型检查(例如:)进行操作if (p is Number)? 还是应该转换为字符串,然后尝试将其解析为两倍? 更新:澄清我的对象是int,uint,float,double,等等,它不是字符串。我正在尝试制作一个将任何对象序列化为xml的函数,如下所示: <string>content</string> 要么 <numeric>123.3</numeric> 或提出例外。

7
XML序列化和继承的类型
在上一个问题之后,我一直在努力使我的对象模型序列化为XML。但是我现在遇到了一个问题(奇怪的是!)。 我的问题是我有一个抽象基本类类型的集合,该集合由具体的派生类型填充。 我认为只将XML属性添加到所有涉及的类中就可以了,而且一切都会变得很顺利。可悲的是,事实并非如此! 因此,我对Google进行了一些研究,现在我了解了为什么它不起作用。在该XmlSerializer实际上是在做一些聪明的反射,以对象序列化到/从XML,并且因为它的基础上,抽象类型,它不能弄清楚到底是怎么回事了它的交谈。精细。 我确实在CodeProject上遇到过此页面,它看起来可能很有帮助(但仍可以完全阅读/使用),但是我想我也想将此问题带到StackOverflow表中,以查看是否有任何整洁的地方骇客/技巧,以便以最快/最轻便的方式启动并运行它。 有一件事我还要补充的是,我不要想往下走XmlInclude的路线。耦合太简单了,系统的这个区域正在大量开发中,因此这将是真正的维护难题!


6
如何将枚举值序列化为int?
我想将我的enum-value序列化为一个int,但是我只知道名字。 这是我的(示例)类和枚举: public class Request { public RequestType request; } public enum RequestType { Booking = 1, Confirmation = 2, PreBooking = 4, PreBookingConfirmation = 5, BookingStatus = 6 } 和代码(只是为了确保我没有做错) Request req = new Request(); req.request = RequestType.Confirmation; XmlSerializer xml = new XmlSerializer(req.GetType()); StringWriter writer = new StringWriter(); xml.Serialize(writer, …

6
强制XmlSerializer将DateTime序列化为'YYYY-MM-DD hh:mm:ss'
我有一些RESTful服务的XSD架构。与xsd.exe工具一起使用以生成C#代码时,XSD会xs:date生成以下代码: [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")] public System.DateTime time { get { return this.timeField; } set { this.timeField = value; } } 将XML反序列化为对象时,XmlSerializer一切似乎都很好。我面临的问题是该服务希望日期格式化为YYYY-MM-DD hh:mm:ssXSD生成的代码似乎只能生成YYYY-MM-DD。 如果我手动修改XSD以xs:dateTime键入,则生成的C#代码将产生:2010-08-20T20:07:03.915039Z。 基本上,我如何强制序列化产生YYYY-MM-DD hh:mm:ss?是否可以对XSD进行某些操作,或者可以对生成的C#代码进行更改?

5
如何通过Xml属性重命名类名?
假设我有一个名为Song的可序列化XML的类: [Serializable] class Song { public string Artist; public string SongTitle; } 为了节省空间(并且还模糊处理XML文件),我决定重命名xml元素: [XmlRoot("g")] class Song { [XmlElement("a")] public string Artist; [XmlElement("s")] public string SongTitle; } 这将产生如下的XML输出: <Song> <a>Britney Spears</a> <s>I Did It Again</s> </Song> 我也想重命名/重新映射类/对象的名称。假设在上面的示例中,我希望将Song类重命名为g。这样生成的xml应该如下所示: <g> <a>Britney Spears</a> <s>I Did It Again</s> </g> 是否可以通过xml-attributes重命名类名? 我不想手动创建/遍历DOM,所以我想知道是否可以通过装饰器来实现。 提前致谢! 更新:糟糕!这次我真的又做了一次!忘了提及-我实际上是在XML中序列化Song对象的列表。 这是序列化代码: public …

9
XML可序列化可序列化对象的通用列表
我可以序列化可序列化对象的通用列表,而无需指定它们的类型。 类似于下面的破损代码背后的意图: List<ISerializable> serializableList = new List<ISerializable>(); XmlSerializer xmlSerializer = new XmlSerializer(serializableList.GetType()); serializableList.Add((ISerializable)PersonList); using (StreamWriter streamWriter = System.IO.File.CreateText(fileName)) { xmlSerializer.Serialize(streamWriter, serializableList); } 编辑: 对于那些想了解细节的人:当我尝试运行此代码时,它在XMLSerializer [...]行上的错误如下: 无法序列化接口System.Runtime.Serialization.ISerializable。 如果我改变了List<object>我会得到"There was an error generating the XML document."。InnerException详细信息是"{"The type System.Collections.Generic.List1[[Project1.Person, ConsoleFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] may not be used in this context."}" 人员对象定义如下: [XmlRoot("Person")] public …

8
为什么.NET中没有XML可序列化的字典?
我需要一个XML可序列化的字典。实际上,我现在有两个非常不同的程序,需要一个。看到.NET没有它,我感到非常惊讶。我在其他地方问了这个问题,并得到了讽刺的回答。我不明白为什么这是一个愚蠢的问题。 鉴于各种.NET功能对XML序列化的依赖性如何,有人可以启发我,为什么没有XML可序列化的字典。希望您也可以解释为什么有些人认为这个愚蠢的问题。我想我必须缺少一些基本知识,希望您能够填补空白。

2
在元素中将属性序列化为Xml属性
我有以下课程: [Serializable] public class SomeModel { [XmlElement("SomeStringElementName")] public string SomeString { get; set; } [XmlElement("SomeInfoElementName")] public int SomeInfo { get; set; } } (当填充一些测试数据时)并使用XmlSerializer.Serialize()进行序列化会导致以下XML: <SomeModel> <SomeStringElementName>testData</SomeStringElementName> <SomeInfoElementName>5</SomeInfoElementName> </SomeModel> 我需要拥有的是: <SomeModel> <SomeStringElementName Value="testData" /> <SomeInfoElementName Value="5" /> </SomeModel> 有没有办法在不编写自己的自定义序列化代码的情况下将其指定为属性?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.