Tag: xml serialization

具有受保护属性设置器的对象XmlSerialization

这是我的目标 [Serializable()] public class PersistentObject { public virtual int ID { get { return id; } protected set { id = value;} } … } 当我尝试将其序列化为xml时,我收到一条错误“无法在此上下文中使用属性或索引器PersistentObject.ID,因为set访问器不可访问”。 如果setter不存在,它可以正常工作。 我希望将此ID保持为序列化而不使用涉及ID上的[XmlIgnore()]的hacktastic解决方案。 我更喜欢如果我只能在setter上添加[XmlIgnore()],但编译器会抱怨。 任何人都有一个很好的解决方案吗?

如何让LinqToXSD正确输出名称空间前缀声明?

我正在尝试使用LinqToXSD创建XML数据绑定类和包含许多导入模式的XML模式。 所有模式都位于此处。 为此,我使用了以下根模式文档: Tmats Root 我使用Linq到XSD创建了类。 然后我写了以下测试: [TestMethod()] public void TmatsXmlExample4() { Tmats tmats = new Tmats { ProgramName = “My Program”, OriginationDate = DateTime.Now, }; tmats.PointOfContact.Add(new PointOfContactType { Address = “12345 Anywhere Street”, Agency = “My Agency”, Name = “Robert Harvey”, Telephone = “111-222-3333” }); Debug.Print(tmats.ToString()); } 我期望输出看起来像这样: My Program 2012-05-09-07:00 Robert Harvey My […]

C#中的XML序列化

我在哪里可以找到关于对象的XMl序列化的好教程? 谢谢。

从XML反序列化对象时出现间歇性错误

我有一个程序,它将存储为XML的对象作为数据库(基本上是一个消息队列)并对它们进行反序列化。 间歇性地,我将得到以下错误之一: System.Runtime.InteropServices.ExternalException: Cannot execute a program. The command being executed was “C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe” /noconfig /fullpaths @”C:\Documents and Settings\useraccount\Local Settings\Temp\lh21vp3m.cmdline”. at System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine) at System.CodeDom.Compiler.Executor.ExecWaitWithCapture(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine) at Microsoft.CSharp.CSharpCodeGenerator.Compile(CompilerParameters options, String compilerDirectory, String […]

C#XML序列化 – 领先的问号

问题 通过利用我在网上找到的一些样本,我编写了一些XML序列化方法。 方法1:序列化一个Object并返回:(a)类型,(b)xml字符串 方法2:取上面的(a)和(b)并返回对象。 我注意到Method1中的xml字符串包含一个前导’?’。 使用Method2重建Object时,这似乎没问题。 但是当在应用程序中进行一些测试时,有时我们会领先’???’ 代替。 这导致Method2在尝试重建Object时抛出exception。 在这种情况下,’对象’只是一个简单的int。 System.InvalidOperationException未处理Message =“XML文档(1,1)中存在错误。” Source =“System.Xml”StackTrace:位于System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle)的System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件)中。 .Serialization.XmlSerializer.Deserialize(Stream stream)位于XMLSerialization.Program.Mrogram.Main的C:\ Documents and Settings \ … Projects \ XMLSerialization \ Program.cs:第96行的XMLSerialization.Program.DeserializeXmlStringToObject(String xmlString,String objectType) (String [] args)在C:\ Documents and Settings \ … Projects \ XMLSerialization \ Program.cs:第49行 是否有人能够解释可能导致这种情况的原因? 示例代码 这是我编写的迷你测试器中的示例代码,它是作为VS控制台应用程序运行的。 它会显示XML字符串。 您还可以取消注释区域以追加额外的前导’??’ 重现exception。 using System; using System.IO; […]

如何使用XmlSerializer反序列化为List

我正在尝试将下面的XML反序列化为类,将Components反序列化为List ,但无法弄清楚如何执行此操作。 反序列化器适用于所有其他属性,但不适用于Components 。 有人知道怎么做吗? Joe Smith jdsmith DMS Visio 2007 Pro Component 1 Component 2 887 1320p

在XmlSerializer中使用generics

在C#中使用XML序列化时,我使用如下代码: public MyObject LoadData() { XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject)); using (TextReader reader = new StreamReader(settingsFileName)) { return (MyObject)xmlSerializer.Deserialize(reader); } } (以及类似的反序列化代码)。 它需要铸造而且不是很好。 有没有办法,直接在.NET Framework中使用generics与序列化? 也就是说写下这样的东西: public MyObject LoadData() { // Generics here. XmlSerializer xmlSerializer = new XmlSerializer(); using (TextReader reader = new StreamReader(settingsFileName)) { // No casts nevermore. return xmlSerializer.Deserialize(reader); } }

.NET XML序列化和inheritance

我有这样的结构: public interface A { public void method(); } public class B : A { } public class C : A { } List list; List包含B和C类型的对象,它们还有一些我想保留的字段,我现在可以序列化它,反序列化并获取正确的对象实例吗? 最好是XML 编辑: 是否有任何简单的方法来序列化包含接口的列表,然后将其反序列化回B和C实例?

通过StringBuilder使用XmlWriter进行XML序列化是utf-16而via Stream是utf-8?

当我遇到它时,我感到很惊讶,并编写了一个控制台应用程序来检查它,并确保我没有做任何其他事情。 有谁能解释一下? 这是代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Xml; using System.Xml.Serialization; namespace ConsoleApplication1 { public class Program { static void Main(string[] args) { var o = new SomeObject { Field1 = “string value”, Field2 = 8 }; Console.WriteLine(“ObjectToXmlViaStringBuilder”); Console.Write(ObjectToXmlViaStringBuilder(o)); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(“ObjectToXmlViaStream”); Console.Write(StreamToString(ObjectToXmlViaStream(o))); Console.ReadKey(); } public static string ObjectToXmlViaStringBuilder(SomeObject […]

unit testing序列化有什么意义吗?

我有一个类,它序列化一组对象(使用XML序列化),我想要unit testing。 我的问题是感觉我将测试XML序列化的.NET实现,而不是任何有用的。 我还有一个轻微的鸡蛋和鸡蛋场景,为了测试Reader,我需要一个由Writer生成的文件来这样做。 我认为问题(有3个但它们都有关系)我最终都在寻找反馈意见: 是否可以在不使用Reader的情况下测试Writer? 测试阅读器的最佳策略是什么(XML文件?记录/回放模拟)? 是否所有您真正要做的是测试已反序列化的对象的属性值? 测试作者的最佳策略是什么! 关于Xml序列化的背景信息 我没有使用模式,因此所有XML元素和属性都与对象的属性相匹配。 由于没有架构,因此XmlSerializer会忽略与每个对象的属性中找不到的架构/属性不匹配的标签/属性(因此属性的值为null或默认值)。 这是一个例子 Bob 20 会映射到 public class MyObject { public string Name { get;set; } public int Age { get;set; } [XmlAttribute] public int Height { get;set; } } 反之亦然。 如果对象更改为以下,则XML仍会成功反序列化,但FirstName将为空。 public class MyObject { public string FirstName { get;set; } public int Age […]