Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用XElement和LINQ将XML加载到类对象中_C#_Xml_Linq - Fatal编程技术网

C# 尝试使用XElement和LINQ将XML加载到类对象中

C# 尝试使用XElement和LINQ将XML加载到类对象中,c#,xml,linq,C#,Xml,Linq,我有以下XML <Workflow Name="Workflow1"> <Parameter Name="Parameter1">Value1</Parameter> <Parameter Name="Parameter2">Value2</Parameter> <Environment Name="Environment1" Type="Typ1"> <DataCenter Name="DC1" Dep

我有以下XML

<Workflow Name="Workflow1">
<Parameter Name="Parameter1">Value1</Parameter>
<Parameter Name="Parameter2">Value2</Parameter>
<Environment Name="Environment1" Type="Typ1">     
  <DataCenter Name="DC1" DeployEnvironmentName="blah"/>
</Environment>
<Environment Name="Environment2" Type="Typ2">     
  <DataCenter Name="DC2" DeployEnvironmentName="blah"/>
</Environment>

我总是遇到语法错误。出于某种原因,它似乎不喜欢这些嵌套表达式。有人知道会出什么问题,或者知道更好的方法吗?提前感谢

您需要删除此分号

              Name = p.Attribute("Name").Value,
              Type = (EnvironmentType)Enum.Parse(typeof
             (EnvironmentType), p.Attribute("Type").Value, true),
              DataCenters = p.Elements("DataCenter").Select(
               dc => new DataCenter { 
                                      Name = dc.Attribute("Name").Value,                                      DeployEnvironmentName = dc.Attribute         
                                     ("DeployEnvironmentName").Value                                      })
                                });
                                 ^^^
            });

在中不应使用分号,应使用逗号分隔属性。

您的XML文件似乎已损坏。
工作流
标记从未关闭。

您能提供错误消息吗?我一直收到语法错误。-什么错误?哪里到目前为止,您进行了哪些调试,发现了什么?你需要进一步隔离这个问题。一个好的起点是将庞大的Linq表达式分解成几行,以便您可以实际调试它。
    var workflows =
        root.Elements("Workflow")
            .Select(
                e =>
                new Workflow
                {
                    Name = e.Attribute("Name").Value,
                    Parameters = e.Elements("Parameter")
                         .Select(p => 
                         new Parameter { Name = p.Attribute("Name").Value, Value = p.Value }),
        Environments = e.Elements("Environment").Select(
                                   p =>
                                   new Environment
                                   {
                                       Name = p.Attribute("Name").Value,
                                       Type = (EnvironmentType)Enum.Parse(typeof
                                       (EnvironmentType), p.Attribute("Type").Value, true),
                                       DataCenters = p.Elements("DataCenter").Select(
                   dc => new DataCenter { 
                                              Name = dc.Attribute("Name").Value,                                      DeployEnvironmentName = dc.Attribute         
                                              ("DeployEnvironmentName").Value                                      })
                                    });
                });
              Name = p.Attribute("Name").Value,
              Type = (EnvironmentType)Enum.Parse(typeof
             (EnvironmentType), p.Attribute("Type").Value, true),
              DataCenters = p.Elements("DataCenter").Select(
               dc => new DataCenter { 
                                      Name = dc.Attribute("Name").Value,                                      DeployEnvironmentName = dc.Attribute         
                                     ("DeployEnvironmentName").Value                                      })
                                });
                                 ^^^
            });