Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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中检索元素_C#_Linq_Linq To Xml - Fatal编程技术网

C# 如何从XElement中检索元素

C# 如何从XElement中检索元素,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我试图找出获得两个元素(城市和州)值的最佳方法,以便以后使用它们。我是通过每个网站下的网站循环。每次我通过它,我需要拉城市和国家,然后保存为字符串。我有点工作,但我想我走错了方向 XML: 迈阿密 佛罗里达州 1950-16芯 CoreServer 核心 芯法 真的 防病毒 真的 1950-16-COREX CoreExpansionServer 科雷克斯 代码: foreach (XElement xEleSite in siteRows) { IEnumerable<XEl

我试图找出获得两个元素(城市和州)值的最佳方法,以便以后使用它们。我是通过每个网站下的网站循环。每次我通过它,我需要拉城市和国家,然后保存为字符串。我有点工作,但我想我走错了方向

XML:


迈阿密
佛罗里达州
1950-16芯
CoreServer
核心
芯法
真的
防病毒
真的
1950-16-COREX
CoreExpansionServer
科雷克斯
代码:

foreach (XElement xEleSite in siteRows)
{
    IEnumerable<XElement> siteLists = from siteList in xEleSite.Descendants("Site")
                                      select siteList;

    IEnumerable<XElement> siteCity = siteLists.Descendants("City");

    foreach (XElement c in siteCity)
    {
        string cityElement = c.Value.ToString();
    }    
}
foreach(siteRows中的XElement xEleSite)
{
IEnumerable siteList=来自xEleSite.substands(“站点”)中的站点列表
选择站点列表;
IEnumerable siteCity=siteLists.substands(“城市”);
foreach(siteCity中的XElement c)
{
字符串cityElement=c.Value.ToString();
}    
}

考虑以下简化示例:

<Sites>
  <Site>
    <City>Miami</City>
    <State>FL</State>
    <Machines></Machines>
  </Site>
  <Site>
    <City>NY</City>
    <State>FL</State>
    <Machines></Machines>
  </Site>
</Sites>
要对其进行迭代,您可以:

foreach (var i in result)
{
    Console.WriteLine(i.City);
    Console.WriteLine(i.State);
    Console.WriteLine();
}
从最初的问题来看,我认为您需要存储xml中的所有值以供以后使用,而OP的代码在包含它们的最内部循环中只有局部变量。这种方法提供了访问列表中所有值的机会

var result = xEleSite.Descendants("Site")
                     .Select(s => new
                     {
                         City = s.Element("City").Value,
                         State = s.Element("State").Value
                     });
foreach (var i in result)
{
    Console.WriteLine(i.City);
    Console.WriteLine(i.State);
    Console.WriteLine();
}