2010-04-04 37 views
1

我想將對象序列爲XML,我想的XML文件的文件名是隨機如下XML串行化器的文件名

636211ad-ef28-47b9-aa60-207d3fbb9580.xml

fc3b491e5 -59ac-4f6a-81e5-27e971b903ed.xml

我只是好奇如何做這樣的事情?

回答

3

下面是一個示例類示例。

public class TestSerialize 
{ 
    public string Test1; 
    public int Test2; 
} 

class Program 
{  
    [STAThread] 
    static void Main() 
    { 
     var serializer = new XmlSerializer(typeof(TestSerialize)); 
     using (XmlWriter writer = XmlWriter.Create(Guid.NewGuid() + ".xml")) 
     {     
      serializer.Serialize(writer, new TestSerialize() { Test1 = "hello", Test2 = 5 }); 
     } 

     Console.ReadLine(); 
    } 
} 
+0

@Matt:由於以下幾個原因而降低投票率:1)XML序列化器忽略「Serializable」屬性。 2)從.NET 2.0開始,不推薦使用'new XmlTextWriter()'。改爲使用'XmlWriter.Create()'。 3)OP是否說過關於ASCII編碼的東西? – 2010-04-04 02:12:27

+0

@John我更新了我的答案以反映您的意見。我不知道XmlWriter.Create()。我將確保從現在開始使用它。感謝您的評論。 – 2010-04-04 03:22:57

+0

我會逆轉downvote,但我建議你使用'XmlWriter.Create'而不是'XmlTextWriter.Create'。 – 2010-04-04 04:50:14

2

看看System.Guid。

Guid guid = System.Guid.NewGuid(); 
1

有些系列化封裝的很好的說明可以發現here 的名字似乎是一個GUID,因此只需要創建一個新的GUID,將其轉換爲文本 和使用,作爲文件名。

+0

@開發:我差點壓低了你。操作系統並沒有要求如何進行序列化,只是如何以他喜歡的方式獲取文件名。 – 2010-04-04 02:13:29

2
var fileName = String.Format("{0}.xml", System.Guid.NewGuid().ToString());