2013-09-30 60 views
0

我已經使用xsd.exe從我的XML響應生成.cs文件。XmlSerializer.Deserialize忽略不必要的元素

在我的XML響應中,有幾個元素在app中是不需要的,我想省略這些元素,所以我將它們從響應xml文件中刪除並重新生成.cs文件。

我使用這個.cs文件從我的xml服務器響應(包含那些不必要的元素)反序列化,這會導致System.InvalidOperationException。

請讓我知道如何解析或反序列化服務器對僅具有所需屬性的類的響應。

我開始使用Windows Phone應用程序。

謝謝, Kavit。

回答

1

嘗試使用XmlIgnoreAttribute屬性裝飾您不再需要的屬性。

默認情況下,所有公共字段和公共讀/寫屬性都是由XmlSerializer序列化的 。也就是說,每個公開的 字段或屬性的值將作爲XML文檔實例中的XML元素或XML屬性持久化。

要覆蓋字段或屬性的默認序列化,請創建一個XmlAttributes對象,並將其XmlIgnore屬性設置爲true。將對象添加到一個XmlAttributeOverrides對象中,並指定包含要忽略的字段或屬性的對象的類型以及要忽略的字段或屬性的名稱 。

http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx

+0

嗨Gusdor,感謝您的快速回復,你所提到的,我認爲這是必需的系列化,其實我有反序列化服務器的響應,所以我想創建一個屬性的類文件,該文件在我的應用程序中是非常有用的,並且只想反序列化這些屬性,而忽略其他的屬性。 –

+1

@patelkavit只需刪除不需要的屬性即可。 XmlIgnore適用於兩者。這是擁有公共財產的一種很好的方式,但是從任何(德)序列化中省略它。有關更多詳細信息,您將需要發佈一些示例代碼。 – Gusdor

+0

是的,它可以工作,但往往不必要的混亂的代碼:(實際上在web服務響應中,我們的應用程序中只有10到12個XML元素,因此,我們想創建一個只有10-12 –