將物件轉換為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