Tag: xml serialization

ASP.NET Web API – camelcase中的XML

我们正在使用带有MVC 4的Web API,并且需要在驼峰的情况下提供我们的请求/响应。 我们使用以下代码为JSON做了这个: var jsonFormatter = config.Formatters.OfType().Single(); jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 遗憾的是,相同的代码不适用于XmlMediaTypeFormatter 。 在camel案例中格式化XML的最优雅的解决方法是什么?

反序列化嵌套类时,不期望xmlns =”

尝试在服务器上序列化类,将其发送到客户端并在目标上反序列化时,我遇到了问题。 在服务器上,我有以下两个类: [XmlRoot(“StatusUpdate”)] public class GameStatusUpdate { public GameStatusUpdate() {} public GameStatusUpdate(Player[] players, Command command) { this.Players = players; this.Update = command; } [XmlArray(“Players”)] public Player[] Players { get; set; } [XmlElement(“Command”)] public Command Update { get; set; } } 和 [XmlRoot(“Player”)] public class Player { public Player() {} public Player(PlayerColors color) { Color = […]

两次序列化XML相同的标记

我有问题: 我必须将类序列化为XML文件。 但是必须使用相同的名称命名两个属性: 期望的xml: AAA BBB 我不需要将它反序列化回对象。 码: public class Header1 { [XmlElement(“Tag1”)] public String Tag1 { get; set; } } public class Header2 { [XmlElement(“Tag2”)] public String Tag2 { get; set; } } public class Test { [XmlElement(“HeaderText”)] public Header1 Header1 { get; set; } [XmlElement(“HeaderText”)] public Header2 Header2 { get; set; } } […]

XML序列化错误:2种类型都使用XML类型名称“关系”,来自命名空间”

我在通过XML序列化时遇到问题,因为2个clases使用一个名为Relationship的类(尽管是不同的类!)。 我尝试使用XML属性用另一个名称装饰其中一个类,但它仍然给我以下错误: {“Types’SiteServer.Relationship’和’LocalServer.Relationship’都使用XML类型名称’Relationship’,来自命名空间”。使用XML属性为类型指定唯一的XML名称和/或命名空间。”} 这是我的2个class,有谁知道为什么? 我使用错误的属性? 它似乎忽略了它:-) public class SiteServer { [XmlRoot(“SiteServerRelationShip”)] public class Relationship { public string type { get; set; } } public string Name { get; set; } public Relationship Relate = new Relationship(); } public class LocalServer { public class Relationship { public string type { get; set; } } public string […]

如何序列化IList 等接口

可能重复: 如何序列化IList ? 我希望序列化一个类(我们称之为S ),它包含IList类型的属性,其中T是我定义的另一个类。 当我尝试将类S的实例序列化为XML时,我得到一个exception。 这是可以理解的,因为XmlSerializer不知道使用哪个具体类。 是否有一种方法,希望使用属性,指定在序列化/反序列化实例时要实例化的具体类。 我的类S实现创建了List类的实例。 这是一些代码来说明我的例子: using System; using System.Xml.Serialization; using System.IO; [Serializable] public class T { } [Serializable] public class S { public IList ListOfTs { get; set; } public S() { ListOfTs = new List(); } } public class Program { public void Main() { S s = new […]

具有从抽象类型扩展的成员的类的XML序列化

尝试运行此代码时遇到InvalidOperationException 。 示例代码 using System; using System.Collections.Generic; using System.IO; using System.Xml.Serialization; namespace XMLSerializationExample { class Program { static void Main(string[] args) { Caravan c = new Caravan(); c.WriteXML(); } } [XmlRoot(“caravan”, Namespace=”urn:caravan”)] public class Caravan { [XmlElement(“vehicle”)] public Auto Vehicle; public Caravan() { Vehicle = new Car { Make = “Suzuki”, Model = “Swift”, Doors […]

序列化/反序列化动态对象

我有以下课程: public abstract class Animal { public Animal() { _myType = getAnimal(this.GetType().Name); } private dynamic _myType; public dynamic myType { get { return _myType; } } } public class Cat : Animal { public Cat() : base() { } } 它的辅助function: public static T CreateAnimal(string animal) { Type type = Type.GetType(typeof(Form1).FullName + “+” + animal); […]

序列化中基类字段的自定义XML元素名称

如何在进行序列化时更改从基类inheritance的字段的XML元素名称? 例如,我有下一个基类: public class One { public int OneField; } 序列化代码: static void Main() { One test = new One { OneField = 1 }; var serializer = new XmlSerializer(typeof (One)); TextWriter writer = new StreamWriter(“Output.xml”); serializer.Serialize(writer, test); writer.Close(); } 我得到了我需要的东西: 1 现在我创建了Ainheritance自A新类,并为其添加了字段和自定义XML元素名称: public class Two : One { [XmlElement(“SecondField”)] public int TwoField; } 序列化代码: […]

XmlSerializer枚举反序列化失败(不存在)空格

我有一个我反序列化的对象,它包含一个枚举’JourneyPatternLinkDirectionEnumeration’,它被用作节点’Direction’的值。 使用值指定’Direction’时,或者未指定值,并将其表示为xml as 一切正常。 但是,如果它在xml中 我收到以下错误: “实例validation错误:”不是JourneyPatternLinkDirectionEnumeration的有效值。” 我的代码如下: var xmlTextReader = new XmlTextReader(xmlDocUri); xmlTextReader.WhitespaceHandling = WhitespaceHandling.None; xmlTextReader.Normalization = false; var serializer = new XmlSerializer(typeof(T), typeof(T).Assembly.GetTypes()); ouput = (T)serializer.Deserialize(xmlTextReader); 有什么想法吗? 有一个更好的方法吗。 (抱歉,我无法发布完整代码,xml doc是一个65000行的TransXchange doc)

XmlSerializer不会序列化我class级中的所有内容

我有一个非常基本的类,它是一个子类列表,加上一些摘要数据。 [Serializable] public class ProductCollection : List { public bool flag { get; set; } public double A { get; set; } public double B { get; set; } public double C { get; set; } } … // method to save this class private void SaveProductCollection() { // Export case as XML… XmlSerializer xml […]