【C#】將物件轉換為XML

  • 110
  • 0
  • C#
  • 2021-03-04

將物件轉換為XML

系統環境:
Windows 10、Visual Studio 2017

內容摘要
在進行資料交換時,通常會需要使用 XML 或是 JSON 格式來傳輸。當然不可能自己刻XML 字串,這次就直接用內建的方法將物件轉換成XML吧。

解決辦法
只要物件可以序列化,就可以使用以下的方法將物件轉換成XML。也為了提升彈性使用泛型,使這個方法可以通用給各種物件。
而如果對於產出的XML 還有一些特別的需求,例如:物件屬性名稱跟XML 目標的TAG 名稱不一樣,可以搜尋關鍵字 "XmlElementAttribute",之類的在自己去查文件吧!

public string GetXmlString<T>(T obj)
{
    var serializer = new XmlSerializer(typeof(T));
    var xml = new StringBuilder();
    // 使用此方法轉xml,root 會有奇怪的屬性,用這個方法去除他
    var nameSpaces = new XmlSerializerNamespaces();
    nameSpaces.Add("", "");
    // 設定:format xml
    var settings = new XmlWriterSettings { Indent = true };
    using (var writer = XmlWriter.Create(xml, settings))
        serializer.Serialize(writer, obj);

    // 最終回傳xml 字串
    return xml.ToString();
}

 

相關連結
https://stackoverflow.com/questions/47455010/how-to-create-a-dynamic-list-from-other-lists-with-c-sharp
https://stackoverflow.com/questions/8334527/c-sharp-save-listt-to-xml-file