我有点新手与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有什么解决方案吗?
谢谢。我希望能有你的回复:) –