C# 将Xdocument解析为由对象组成的对象

C# 将Xdocument解析为由对象组成的对象,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,这是我第一次使用,所以可能我有一个愚蠢的问题。 我想从XML解析两种类型的对象。第一个很简单: <MyObjects> <MyObjectType1> <id>1</id> <name>EasyObject1</name> <param1>1.05</param1> <param2>1.25</param2> </MyObjec

这是我第一次使用,所以可能我有一个愚蠢的问题。 我想从XML解析两种类型的对象。第一个很简单:

<MyObjects>
   <MyObjectType1>
    <id>1</id>
    <name>EasyObject1</name>
    <param1>1.05</param1>
    <param2>1.25</param2>
   </MyObjectType1>
 </MyObjects>
我使用以下函数进行解析:

private ObjectsModel LoadObjects4File(XDocument xdoc)
    {
        ObjectsModel loadedModels = new ObjectsModel();
        //************************
        var data = from query in xdoc.Descendants("MyObjectType1")
            select new MyObjectType1Model
                   {
                       ID = (int)query.Element("id"),
                       Name = (string)query.Element("name"),
                       Param1= (float)query.Element("param1"),
                       Param2= (float)query.Element("param2")
                   };

        for (int i = 0; i<data.ToList().Count; i++)
        {
         loadedModels .AddExistingPropeller(data.ElementAt(i));
        }
     return loadedModels ;
    }
现在,我想对更复杂/复杂的XML做一些类似的事情,该XML包含关于对象的信息,该对象由属性和具有自己参数的对象组成。XML如下所示:

<Project>
    <id>1</id> 
    <name>Project 1</name>
    <dateCreated>1.1.2014</dateCreated>
    <dateModified>2.1.2014</dateModified>
    <Statistic>
        <param1>123</param1>
            <param2>123</param2>
    </Statistic>
    <Measurements>
      <Measurement>
        <id>1</id>
        <name>Measurement 1</name>
        <param1>10,10,5,5</param2>
        <param2>1</param2>
        <ObjectProperty1>
            <id>1</id>
            <name>Eq 1</name>
            <param1>1.05</param1>
            <param2>1.25</param#2>
        </ObjectProperty1>


我想我需要对XDocument a进行递归扫描,一块一块地构建最终的项目对象,但我对此有点困惑。有人知道怎么做吗?任何想法都会被采纳…

有一些工具可以用来从XML文件生成类文件。使用它。另一方面,在XML元素的名称中嵌入位置信息是一个糟糕的想法,如param1、param2等。。这使得处理文档变得比必要的更困难。如果您需要该信息,请将其作为元素的属性。您应该查看本教程:Re:Gabriel GM-这正是我想要的,非常感谢!!!