将XDocument子体加载到.NETMVC3模型中

将XDocument子体加载到.NETMVC3模型中,.net,xml,asp.net-mvc-3,linq-to-xml,.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> &l

我有一个试图将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>

1.
1
3.
18
-28
135
3.
这是我的控制器上的存储库方法:

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>());

}
public appropository()
{
allApps=新列表();
appData=XDocument.Load(HttpContext.Current.Server.MapPath(“~/App\u Data/Apps.xml”);
var apps=来自appData.substands(“项”)中的应用
选择新应用程序(
(内部)应用元素(“id”),
(浮动)应用元素(“引擎外翻”),
新映射配置(
(int)app.substands(“mapconfig”).substands(“minzoom”).FirstOrDefault(),
(int)app.substands(“mapconfig”).substands(“maxzoom”).FirstOrDefault(),
(float)app.substands(“mapconfig”).substands(“startcenterlat”).FirstOrDefault(),
(float)app.substands(“mapconfig”).substands(“StartCenter”).FirstOrDefault(),
(int)app.substands(“mapconfig”).substands(“startzoom”).FirstOrDefault()
)
);
allApps.AddRange(apps.ToList());
}
这似乎会导致id和引擎版本值被正确读取到App对象中,但是MapConfig对象似乎只是将0设置为所有元素的值


有人知道我做错了什么吗?

您确定这就是XML文件的确切结构,没有名称空间等吗?另外,为什么要使用
子体()
而不仅仅是
元素
?这并不是说你实际上在尝试下多个层次,想必
是一个必需的元素?你展示的代码与你展示的XML一起工作。是的,乔恩,这就是确切的结构。Dan代码可以工作-但是正如我所说,它没有成功读取mapconfig子节点的值。@fencehead2它确实成功读取了值。只需检查
App
MapConfig
的构造函数,您还没有向我们展示它们。