2016. 5. 25. 12:20

아래 코드를 입력하면 클래스 오브젝트를 XML 또는 JSON 타입으로 리턴시켜준다.

[Global.aspx]

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // 응용 프로그램 시작 시 실행되는 코드
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);

        // Content-type 전역지정
        GlobalConfiguration.Configuration.Formatters.Clear();
        //GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter());
        GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.JsonMediaTypeFormatter());
    }
}


Posted by CoolDragon
2013. 9. 10. 09:15
1. class object
    [Serializable, XmlRoot("Field")]
    public class Field
    {
        [XmlAttribute("nm")]
        public string Name { get; set; }

        [XmlText]
        public string Text { get; set; }
    } 
2. serialize
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb, new XmlWriterSettings() { OmitXmlDeclaration = true }))
{
    new XmlSerializer(typeof(Field)).Serialize(writer, type, ns);
}
string xmlString = sb.ToString();
3. deserialize
XmlReader reader = XmlTextReader.Create(new StringReader(xmlString));
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Field));
var result = (Field)xmlSerializer.Deserialize(reader);
reader.Close();


4. Sample

public static XDocument Serialize<T>(this T source)

{

var ser = new XmlSerializer(source.GetType());

var sb = new StringBuilder();

using (var writer = new StringWriter(sb))

{

ser.Serialize(writer, source);

}

return XDocument.Parse(sb.ToString());

}


      public static T Deserialize<T>(this XDocument xmlDocument)

      {

          var xmlSerializer = new XmlSerializer(typeof(T));

          using (var reader = xmlDocument.CreateReader())

              return (T)xmlSerializer.Deserialize(reader);

      }


        



Posted by CoolDragon