Tag: xml serialization

防止对DateTime值进行反序列化时的时区转换

我有一个类,我使用XmlSerializer序列化/反序列化。 该类包含DateTime字段。 序列化时, DateTime字段由包含GMT偏移量的字符串表示,例如2010-05-05T09:13:45-05:00 。 反序列化时,这些时间将转换为执行反序列化的机器的本地时间。 由于不值得解释的原因,我想阻止这种时区转换的发生。 序列化发生在野外,其中存在此​​类的多个版本。 反序列化发生在我控制的服务器上。 因此,似乎在反序列化期间最好处理这个问题。 除了实现IXmlSerializable并“手动”执行所有反序列化之外,我怎样才能实现这一点?

如何动态添加XmlInclude属性

我有以下课程 [XmlRoot] public class AList { public List ListOfBs {get; set;} } public class B { public string BaseProperty {get; set;} } public class C : B { public string SomeProperty {get; set;} } public class Main { public static void Main(string[] args) { var aList = new AList(); aList.ListOfBs = new List(); var c […]

将数据集转换为XML

我已经坚持这个问题几个小时了,似乎无法搞清楚,所以我在这里问:) 好吧,我有这个function: private void XmlDump() { XDocument doc = new XDocument(new XDeclaration(“1.0”, “utf-8”, “yes”)); XElement rootElement = new XElement(“dump”); rootElement.Add(TableToX(“Support”)); string connectionString = ConfigurationManager.ConnectionStrings[“MyDb”].ConnectionString; SqlConnection con = new SqlConnection(connectionString); string sql = “select * from support”; SqlDataAdapter da = new SqlDataAdapter(sql, con); DataSet ds = new DataSet(“Test”); da.Fill(ds, “support”); // Convert dataset to XML here […]

文件存在时FileMode.Open和FileMode.OpenOrCreate的区别? c#bug?

我写了那段代码: public void Save() { using (FileStream fs = new FileStream(Properties.Settings.Default.settings_file_path, FileMode.Open)) { XmlSerializer ser = new XmlSerializer(typeof(MySettings)); ser.Serialize(fs, this); } } 当我使用FileMode.Open一切都很好,输出是这样的: 12 A0 MEASUREMENT 5000 C0 MEASUREMENT 但当我将其更改为FileMode.OpenOrCreate输出将更改为: 12 A0 MEASUREMENT 5000 C0 MEASUREMENT > 是什么让整个xml文件因为最后添加>符号而损坏。 这是可解释的还是它的c#bug?

如何重命名序列化对象列表后生成的 XML属性

我正在序列化列表对象List ,XmlSerializer生成属性,我想重命名或删除它。 可以通过创建将List封装为字段的新类来完成吗? [XmlRoot(“Container”)] public class TestObject { public TestObject() { } public string Str { get; set; } } List tmpList = new List(); TestObject TestObj = new TestObject(); TestObj.Str = “Test”; TestObject TestObj2 = new TestObject(); TestObj2.Str = “xcvxc”; tmpList.Add(TestObj); tmpList.Add(TestObj2); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; settings.Indent = true; XmlSerializer […]

数据协定序列化程序 – 如何省略集合的外部元素

如何使用Data Contract Serializer序列化没有外部元素的列表 ? 我正在使用.Net 3.5。 我有一个包含列表的类,除其他外,我希望序列化,而外部元素不符合相关的XSD: [DataContract(Name=”MyClass”)] public class MyClass { … [DataMember(Name=”Parameters”)] public List Parameters; … } [DataContract(Name=”Parameter”)] public struct Parameter { [DataMember(Name=”ValueName”)]string ValueName; [DataMember(Name=”Value”)]int Value; public Parameter(string ValueName, int Value) { this.ValueName = ValueName; this.Value = Value; } } 以上序列化为(假设列表中只有一个参数): 我想将它序列化如下: 使用XmlSerializer我可以通过将[XmlElement]应用于列表来完成此操作: [XmlElement (“Parameter”)] public List Parameters; 但是我不想使用XmlSerializer因为我的类有一些非序列化友好的属性,我希望处理那些使用[OnSerializing]属性系列的属性。 谢谢。

在序列化期间排除某些属性而不更改原始类

我正在尝试序列化具有多个属性的对象,但我不想在序列化中包含所有属性。 另外,我想更改日期格式。 当然我可以添加[XmlIgnore] ,但我不允许更改原始类。 我能想到的唯一选择是创建一个新类并复制这两个类之间的所有内容。 但那将是丑陋的,需要大量的手动代码。 是否有可能创建一个子类,因为原始不是抽象的? 我的问题是: 如何在不更改原始类的情况下排除某些属性? 如何自定义输出XML的日期格式? 要求: 尽可能强大的打字 序列化的XML应该是可反序列化的 提前致谢。

条件xml序列化

我有以下C#类: public class Books { public List BookList; } public class Book { public string Title; public string Description; public string Author; public string Publisher; } 如何将此类序列化为以下XML? 我希望XML只包含那些值为null / empty的属性。 例如:在第一个Book元素中,author是空白的,因此它不应出现在序列化XML中。

为什么XmlSerializer不需要标记类型?

在C#中,如果我想使用XmlSerializer序列化实例,则不必使用[Serializable]属性标记对象的类型。 但是,对于其他序列化方法,例如DataContractSerializer ,需要将类标记为[Serializable]或[DataContract] 。 是否有关于序列化要求的标准或模式?

使用XmlSerializer序列化派生类

我正在使用XMLSerializer来序列化包含通用列表的对象 List Children {get;set} 问题是每个元素都派生自ChildBase ,而ChildBase实际上是一个抽象类。 当我尝试反序列化时,我得到一个invalidOperationException 有没有办法可以将XMLSerializer与派生对象一起使用? 谢谢。