Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# XML选择sing节点并循环遍历它_C#_Xml - Fatal编程技术网

C# XML选择sing节点并循环遍历它

C# XML选择sing节点并循环遍历它,c#,xml,C#,Xml,我在循环XML节点时遇到了一些问题 首先,以下是XML文件的一般格式: <Config> <Facilities> <Facility> <ID>1</ID> <Name>Facility Name</Name> <Profiles> <Profile> <Name>Value</Na

我在循环XML节点时遇到了一些问题

首先,以下是XML文件的一般格式:

<Config>
  <Facilities>
    <Facility>
      <ID>1</ID>
      <Name>Facility Name</Name>
      <Profiles>
        <Profile>
            <Name>Value</Name>
            <Item2>Value</2>
        </Profile>
        <Profile>
            <Name>Another Value</Name>
        </Profile>
      </Profiles>
    </Facility>
    <Facility>
      <ID>2</ID>
      <Name>Facility Name</Name>
      <Profiles>
        <Profile>
            <Name>Value</Name>
        </Profile>
      </Profiles>
    </Facility>
  </Facilities>
</Config>
基本上,我想在设施中循环并选择具有特定ID的设施(该ID来自我在代码前面设置的
facilityID
,是的,我已经检查过了,设置正确)。然后我想浏览与设施相关联的配置文件,并循环浏览它们。我希望能够将每个
中的所有元素视情况而定


但是,当我执行此代码时,它不会在调试控制台中返回任何内容。

您是指类似的内容吗?当然,这是在使用这个类。我倾向于选择它,因为它更容易调试,至少对我来说,更容易部署

var root = XElement.Load(CONFIG_FILE).Element("Facilities");

var facility = root.Elements("Facility").FirstOrDefault(c => c.Element("ID").Value == facilityID.ToString());

return facility.Element("Profiles").Elements("Profile");
它没有任何错误处理,但您可以根据需要添加它

我不知道您是否想这样做,这取决于您将如何使用它,但您也可以将最后一行替换为:

return facility.Element("Profiles").Elements("Profile").Select(c => c.Element("Name").Value);

这样你就知道名字了。同样,这取决于你到底在找什么。我刚刚添加了这个,因为我看到您的示例只是打印出名称。

您的意思是这样的?当然,这是在使用这个类。我倾向于选择它,因为它更容易调试,至少对我来说,更容易部署

var root = XElement.Load(CONFIG_FILE).Element("Facilities");

var facility = root.Elements("Facility").FirstOrDefault(c => c.Element("ID").Value == facilityID.ToString());

return facility.Element("Profiles").Elements("Profile");
它没有任何错误处理,但您可以根据需要添加它

我不知道您是否想这样做,这取决于您将如何使用它,但您也可以将最后一行替换为:

return facility.Element("Profiles").Elements("Profile").Select(c => c.Element("Name").Value);

这样你就知道名字了。同样,这取决于你到底在找什么。我刚刚添加了这个,因为我看到您的示例仅打印出名称。

我不确定您的文件中是否存在此项,但在发布的示例中似乎存在XML错误

<Item2>Value</2>

我不确定这是否存在于您的文件中,但在发布的示例中似乎存在XML错误

<Item2>Value</2>

正如@Calliah在那个答案中指出的,在您的示例中,我假设有一个输入错误,您列出了
。如果这不是一个输入错误,并且您的XML可能有类似的错误,那么这将极大地改变我们必须采取的方法。嘿……我想是活到老学到老。错别字是罪魁祸首!正如@Calliah在那个答案中指出的,在您的示例中,我假设有一个输入错误,您列出了
。如果这不是一个输入错误,并且您的XML可能有类似的错误,那么这将极大地改变我们必须采取的方法。嘿……我想是活到老学到老。错别字是罪魁祸首!谢谢你的建议;然而,这是一个微不足道的打字错误导致了这个问题;然而,造成这一问题的是一个微不足道的打字错误。