2012-12-11 45 views
1

這對我更有幫助;如果你確實回答了下面的問題。有關XmlSerializer的問題

  1. 是否XmlSerializer是基於訂單的? eg) 我的課程/ XML如下所示。物業訂單已更改。 仍然這樣做序列化/反序列化?

    public class Movie 
        { 
        public string Title { get; set; } 
        public int Rating { get; set; } 
        } 
    

    和XML就像

    <?xml version="1.0" encoding="utf-8"?> 
        <Movie xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
        <Rating>6.9</Rating> 
        <Title>Starship Troopers</Title> 
        </Movie> 
    
  2. 反序列化過程中會發生什麼;如果我的類沒有屬性(例如標題)但xml具有該元素?

  3. 假設我有超類(A)的超類(A)和兩個子類(B,C)。 在運行時如何確定哪個對象我應該在下面傳遞時,我得到的XML響應?因爲我不知道什麼是xml的RootElement(B或C)?

    XmlSerializer ser = new XmlSerializer(typeof(B or C)); ?? 
    



一個solution克服Q2


+2

的XmlSerializer不使用/需要(或擔保?)兄弟元素的順序。這就是爲什麼我喜歡通過DataContractSerializer進行「可能會被人類改變的東西」的原因之一。另外,請每個職位*一個*重點問題(標題中也總結了這個問題)。 – 2012-12-11 19:03:33

+0

@pst你能回答我的第二個問題嗎? –

+1

您應該看看DataContractSerializer,它更現代化,並且仍在積極開發中。 XmlSerializer不是。 –

回答

1

答覆數2:你會得到一個InvalidOperationException。

反序列化期間發生錯誤。原始異常是使用InnerException屬性可用的 。

在這裏看到:msdn

答覆問題數3:

你的問題的解決方案是實現IXmlSerializable的接口。這將允許您控制整個序列化過程。看看這個CodeProject上的文章 - 這是一個很好的開始

在這裏看到:codeproject

+0

我的問題3與該鏈接不同。這是處理序列化,但我的情況反序列化,我不知道哪個子類(根元素)我越來越?請幫忙。 –

+0

我已更新我的帖子 – MUG4N