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

时间:2014-04-02 22:44:48

标签: c# xml linq linq-to-xml

这是我第一次使用,所以也许我有一个愚蠢的问题。 我想从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看起来像这样:

<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进行递归扫描,逐个构建最终的Project对象,但我有点卡在这上面。有谁知道如何做到这一点?任何想法都会被认可......

0 个答案:

没有答案