我有點新手與XML序列/反序列化的東西和tyring編寫一些泛型類。 在使用XmlSerializer.Deserialize(typeof(T))
時,我意識到T對象應該與我的XML中的父元素具有相同的名稱。下面是我用這個例子即FoodPlaces.xml XML文檔:C#:XML反序列化限制
<foodplaces>
<foodplace>
<name> The Indian Restaurant</name>
<week> 47 </week>
<monday>
<food> Pasta </food>
<food> chineese food</food>
<food> veg food </food>
</monday>
<tuesday>
<food> Indian food</food>
<food> Veg food </food>
</tuesday>
</foodplace>
<foodplace>
<name> Restauran Italian </name>
<week> 47 </week>
<monday>
<food> Pizza </food>
<food> Checken </food>
<food> sallad </food>
</monday>
<tuesday>
<food> Fish </food>
<food> ris </food>
<food> Biff </food>
<food> Checken </food>
</tuesday>
</foodplace>
</foodplaces>
這是怎麼了,我反序列化這個XML:
var serializer = new XmlSerializer(typeof(foodplaces));
var fs = new FileStream(@"D:\FoodPlaces.xml", FileMode.Open);
var reader = XmlReader.Create(fs);
var fp = (foodplaces)serializer.Deserialize(reader);
fs.Close();
這工作,因爲精絕我存儲類名稱是「foodplaces」,它是XML文件中最頂層/父元素。
當我想我的存儲類重命名爲MyFoodPlaces,發生這種情況:
*System.InvalidOperationException was unhandled
HResult=-2146233079
Message=There is an error in XML document (1, 2).
Source=System.Xml
//Skipping stack trace:
InnerException:
HResult=-2146233079
**Message=<foodplaces xmlns=''> was not expected.**
Source=Microsoft.GeneratedCode*
,如果我將其重命名爲「foodplaces」,這是在XML中最頂層/父元素這將得到糾正。
問題:
1.如果我想將這個XML數據存儲在其他一些不同名稱的e.g MyfoodPlaces類中,該怎麼辦?
2.使用LinQ有什麼解決方案嗎?
謝謝。我希望能有你的回覆:) –