我有以下类和持有它的列表:
public class Transport
{
public string TransportType { get; set; }
public string Mode { get; set; }
public class Coordinates
{
public float ID { get; set; }
public float LocX { get; set; }
public float LocY { get; set; }
public float LocZ { get; set; }
public ObjectState State { get; set; }
public List<int[]> Connections = new <int[]>();
}
}
public enum ObjectState
{
Fly,
Ground,
Water
}
public static List<Transport> Tracking = new List<Transport>();
如何将跟踪序列化为XML?
我知道我可以在列表中使用[Serializable]并将其序列化为文件,但我不确定如何定义它以保存为XML。
答案 0 :(得分:19)
如果您的两个类都使用[Serializable]
属性标记,那么将文件保存到文件应该非常简单:
var serializer = new XmlSerializer(typeof(Transport));
using(var writer = new StreamWriter("C:\\Path\\To\\File.xml"))
{
serializer.Serialize(writer, instance);
}
<强>更新强>
抱歉,没有意识到你问的是如何自定义输出。这就是[XmlAttribute]
和[XmlElement]
属性的用途:
public class Transport
{
// Store TransportType as an attrribute called Type in the XML
[XmlAttribute("Type")]
public string TransportType { get; set; }
// Rest of Implementation
}
答案 1 :(得分:0)
你需要一个流和一个XmlSerializer对象,这是一个例子:
FileStream fs = new FileStream(@"C:\MyPath", FileMode.OpenOrCreate);
xmlSerializer = new XmlSerializer(typeof(MyClass));
xmlSerializer.Serialize(fs, myClassInstance);
fs.Flush();
fs.Close();
fs.Dispose();
不要忘记以自己的方式处理错误。我还假设您要序列化所有类的属性。