Skip to content

Instantly share code, notes, and snippets.

@thdotnet
Created October 31, 2013 15:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thdotnet/7252193 to your computer and use it in GitHub Desktop.
Save thdotnet/7252193 to your computer and use it in GitHub Desktop.
Based on @tucaz's project "https://github.com/tucaz/XmlToObjectParser", I decided to do the oposite, ExpandoObject to XML. Enjoy http://twitter.com/thdotnet
using System;
using System.Dynamic;
using System.Xml.Linq;
namespace ConsoleApplication5
{
internal class ToXml
{
public string GetXml(ExpandoObject obj, XElement rootElement)
{
foreach (var keyValue in obj)
{
if (keyValue.Value is ExpandoObject)
{
var root = new XElement(keyValue.Key);
GetXml(keyValue.Value as ExpandoObject, root);
if (rootElement == null)
rootElement = root;
else
rootElement.Add(root);
}
if (keyValue.Value is string)
{
var xml = new XElement(keyValue.Key, keyValue.Value);
rootElement.Add(xml);
}
}
return rootElement.ToString();
}
}
class Program
{
static void Main(string[] args)
{
dynamic precadastramento = new ExpandoObject();
precadastramento.PreCadastramento = new ExpandoObject();
precadastramento.PreCadastramento.prospect = new ExpandoObject();
precadastramento.PreCadastramento.prospect.idProprio = "007";
precadastramento.PreCadastramento.prospect.nome = "james";
precadastramento.PreCadastramento.prospect.sobrenome = "bond";
precadastramento.PreCadastramento.prospect.email = "jbond@secret.mi6.co.uk";
precadastramento.PreCadastramento.prospect.telefoneFixo = "1199558877";
precadastramento.PreCadastramento.prospect.dataNascimento = "31/12/1980";
precadastramento.PreCadastramento.prospect.rg = "1122245645";
precadastramento.PreCadastramento.prospect.cpf = "11111111111";
precadastramento.PreCadastramento.prospect.cep = "01230000";
precadastramento.PreCadastramento.prospect.rua = "rua albulquerque";
precadastramento.PreCadastramento.prospect.numero = "1";
precadastramento.PreCadastramento.prospect.complemento = "casa";
precadastramento.PreCadastramento.prospect.bairro = "santa cecília";
precadastramento.PreCadastramento.prospect.cidade = "São Paulo";
precadastramento.PreCadastramento.prospect.estado = "SP";
var a = new ToXml();
Console.WriteLine(a.GetXml(precadastramento, null));
Console.Read();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment