Fórum Erro ao Serializar Objeto(Classe) em XML CSharp #519113
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)