将XDocument Descendants加载到.NET MVC 3模型中

时间:2013-05-06 09:18:16

标签: .net xml asp.net-mvc-3 linq-to-xml

我有一个存储库,试图将XML文档加载到类中。在我尝试访问map config部分中的后代元素之前,这一切似乎都没有问题。

这是XML文件的结构:

 <apps>
  <item>
    <id>1</id>
    <engineversion>1.0</engineversion>
    <mapconfig>
      <minzoom>3</minzoom>
      <maxzoom>18</maxzoom>
      <startcenterlat>-28</startcenterlat>
      <startcenterlng>135</startcenterlng>
      <startzoom>3</startzoom>
    </mapconfig>
  </item>
</apps>

这是我控制器上的存储库方法:

public AppRepository()
{
    allApps = new List<App>();

    appData = XDocument.Load(HttpContext.Current.Server.MapPath("~/App_Data/Apps.xml"));

    var apps = from app in appData.Descendants("item")
                select new App(
                    (int)app.Element("id"),
                    (float)app.Element("engineversion"),
                    new MapConfig (
                        (int)app.Descendants("mapconfig").Descendants("minzoom").FirstOrDefault(),
                        (int)app.Descendants("mapconfig").Descendants("maxzoom").FirstOrDefault(),
                        (float)app.Descendants("mapconfig").Descendants("startcenterlat").FirstOrDefault(),
                        (float)app.Descendants("mapconfig").Descendants("startcenterlng").FirstOrDefault(),
                        (int)app.Descendants("mapconfig").Descendants("startzoom").FirstOrDefault()
                    )
                );

    allApps.AddRange(apps.ToList<App>());

}

这似乎导致id和引擎版本值正确地被读入App对象,但MapConfig对象似乎只有0设置为所有元素的值。

谁能看到我做错了什么?

0 个答案:

没有答案