Erro ao Serializar Objeto(Classe) em XML CSharp
07/05/2015
0
Boa Tarde
No Visual Studio 2008 está me retornando o Erro na exception Erro ao gerar o documento XML. e na InnerException O inicializador de tipo de 'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterPedidos' acionou uma exceção. porém com o mesmo código no Visual Studio 2013 ele serializa normalmente, tenho que usar o 2008, é um Projeto de Integration Services
Código para Serializar Objeto
Classe que estou utilizando para Serializar
Chamada para serializar
No Visual Studio 2008 está me retornando o Erro na exception Erro ao gerar o documento XML. e na InnerException O inicializador de tipo de 'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterPedidos' acionou uma exceção. porém com o mesmo código no Visual Studio 2013 ele serializa normalmente, tenho que usar o 2008, é um Projeto de Integration Services
Código para Serializar Objeto
public static string ObjectToXml<T>(T obj) { XmlSerializer serializer = new XmlSerializer(typeof(T)); StringWriter strWriter = new StringWriter(); XmlWriter xmlWriter = XmlWriter.Create(strWriter); serializer.Serialize(xmlWriter, obj); return RemoveAllNamespaces(strWriter.ToString()); } //Implemented based on interface, not part of algorithm public static string RemoveAllNamespaces(string xmlDocument) { XElement xmlDocumentWithoutNs = RemoveAllNamespaces(XElement.Parse(xmlDocument)); return xmlDocumentWithoutNs.ToString(); } //Core recursion function private static XElement RemoveAllNamespaces(XElement xmlDocument) { if (!xmlDocument.HasElements) { XElement xElement = new XElement(xmlDocument.Name.LocalName); xElement.Value = xmlDocument.Value; foreach (XAttribute attribute in xmlDocument.Attributes()) xElement.Add(attribute); return xElement; } return new XElement(xmlDocument.Name.LocalName, xmlDocument.Elements().Select(el => RemoveAllNamespaces(el))); }
Classe que estou utilizando para Serializar
[DataContract] public class Invoiced { [DataMember] public int number { get; set; } [DataMember] public int line { get; set; } [DataMember] public string issueDate { get; set; } [DataMember] public string key { get; set; } } [DataContract] public class Pf { [DataMember] public string cpf { get; set; } [DataMember] public string name { get; set; } } [DataContract] public class Pj { [DataMember] public string cnpj { get; set; } [DataMember] public string corporateName { get; set; } } [DataContract] public class DeliveryAddress { [DataMember] public string neighborhood { get; set; } [DataMember] public string city { get; set; } [DataMember] public string zipcode { get; set; } [DataMember] public string street { get; set; } [DataMember] public string additionalInfo { get; set; } [DataMember] public string state { get; set; } [DataMember] public string number { get; set; } [DataMember] public string country { get; set; } [DataMember] public string reference { get; set; } } [DataContract] public class Main { [DataMember] public string ddd { get; set; } [DataMember] public string number { get; set; } } [DataContract] public class Secondary { [DataMember] public string ddd { get; set; } [DataMember] public string number { get; set; } } [DataContract] public class Business { [DataMember] public string ddd { get; set; } [DataMember] public string number { get; set; } } [DataContract] public class Telephones { [DataMember] public Main main { get; set; } [DataMember] public Secondary secondary { get; set; } [DataMember] public Business business { get; set; } } [DataContract] public class Customer { [DataMember] public Pf pf { get; set; } [DataMember] public Pj pj { get; set; } [DataMember] public DeliveryAddress deliveryAddress { get; set; } [DataMember] public Telephones telephones { get; set; } } [DataContract] public class Link { [DataMember] public string id { get; set; } [DataMember] public string rel { get; set; } [DataMember] public string href { get; set; } } [DataContract] public class Product { [DataMember] public Link link { get; set; } [DataMember] public int quantity { get; set; } [DataMember] public double price { get; set; } [DataMember] public double freight { get; set; } [DataMember] public double discount { get; set; } } [DataContract] public class Order { [DataMember] public string id { get; set; } [DataMember] public string siteId { get; set; } [DataMember] public string purchaseDate { get; set; } [DataMember] public string store { get; set; } [DataMember] public string lastUpdate { get; set; } [DataMember] public string status { get; set; } [DataMember] public Invoiced invoiced { get; set; } [DataMember] public string estimatedDeliveryDate { get; set; } [DataMember] public Customer customer { get; set; } [DataMember] public double totalAmount { get; set; } [DataMember] public double totalFreight { get; set; } [DataMember] public double totalDiscount { get; set; } [DataMember] public List<Product> products { get; set; } } [DataContract] public class Pedidos { [DataMember] public List<Order> orders { get; set; } [DataMember] public int total { get; set; } }
Chamada para serializar
Pedidos pedido = JsonHelper.JsonDeserialize<Pedidos>(lJson); string xmlPedidos = ObjectToXml<Pedidos>(pedido);
Lucas Ramos
Curtir tópico
+ 0
Responder
Posts
07/05/2015
Lucas Ramos
Depois de muito quebrar a cabeça consegui resolver
Eis a solução para o meu problema
Eis a solução para o meu problema
Pedidos pedidos = JsonHelper.JsonDeserialize<Pedidos>(lJson); int lTotalPedidos = pedidos.orders.Count; List<Order> pedido = new List<Order>(); for (int i = 0; i < lTotalPedidos; i++) { pedido.Add(pedidos.orders[i]); } Order[] order = pedido.ToArray(); string xmlPedidos = ObjectToXml<Order[]>(order);
Responder
Clique aqui para fazer login e interagir na Comunidade :)