【发布时间】:2017-06-05 09:28:30
【问题描述】:
我是 XML 序列化/反序列化事物的新手,并且很想编写一些通用类。
在使用XmlSerializer.Deserialize(typeof(T)) 时,我意识到 T 对象应该与我的 XML 中的 Parent 元素具有相同的名称。这是我用于此示例的 XML 文档,即 FoodPlaces.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 数据存储在其他具有不同名称的类中,例如 MyfoodPlaces,该怎么办?
2. 使用LinQ有什么解决办法吗?
【问题讨论】:
标签: c# linq xml-serialization xml-deserialization