C# XML选择sing节点并循环遍历它
我在循环XML节点时遇到了一些问题 首先,以下是XML文件的一般格式:C# XML选择sing节点并循环遍历它,c#,xml,C#,Xml,我在循环XML节点时遇到了一些问题 首先,以下是XML文件的一般格式: <Config> <Facilities> <Facility> <ID>1</ID> <Name>Facility Name</Name> <Profiles> <Profile> <Name>Value</Na
<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可能有类似的错误,那么这将极大地改变我们必须采取的方法。嘿……我想是活到老学到老。错别字是罪魁祸首!谢谢你的建议;然而,这是一个微不足道的打字错误导致了这个问题;然而,造成这一问题的是一个微不足道的打字错误。