Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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文件中的单个父元素中选择多个子元素的值_C#_Xml - Fatal编程技术网

C# 如何在XML文件中的单个父元素中选择多个子元素的值

C# 如何在XML文件中的单个父元素中选择多个子元素的值,c#,xml,C#,Xml,我想从属于单个父元素的XML文件中选择5个元素值 我遵循了几个“选择所有元素…”或“将元素置于单个父项下…”的示例,但它们没有回答这个问题。至少在某种程度上我不能应用相同的解决方案 { var xdoc = XElement.Load(FileName); List<string> locations = new List<string>(); loc

我想从属于单个父元素的XML文件中选择5个元素值

我遵循了几个“选择所有元素…”或“将元素置于单个父项下…”的示例,但它们没有回答这个问题。至少在某种程度上我不能应用相同的解决方案

            {
                var xdoc = XElement.Load(FileName);
                List<string> locations = new List<string>();

                locations = xdoc.Elements("Locations")
                    .Where(x => x.Attribute("ID").Value == lab)
                    .SelectMany(e => e.Elements("Location").Select(n => n.Attribute("ID").Value)).ToList();
                foreach (string id in locations)
                {
                    locID += id + "," ;
                }
                locID.TrimEnd(',');
            }
{
var xdoc=XElement.Load(文件名);
列表位置=新列表();
位置=xdoc.元素(“位置”)
.Where(x=>x.Attribute(“ID”).Value==lab)
.SelectMany(e=>e.Elements(“位置”).Select(n=>n.Attribute(“ID”).Value)).ToList();
foreach(位置中的字符串id)
{
locID+=id+“,”;
}
locID.TrimEnd(',');
}
XML文件的一部分

  <Locations ID="North America">
    <Location ID="23023" />
    <Location ID="23024" />
    <Location ID="20323" />
    <Location ID="22483" />
  </Locations>

西班牙和南美还有其他类似的街区


我想要一个逗号分隔的位置ID字符串,但位置列表的计数为0。我无法正确选择。

如果有多个位置元素,您可以尝试以下操作:

doc.Root.Elements("Locations").Elements("Location").Select(x=>x.Attribute("ID").Value)
  var csv = string.Join(',', ids);

如果您只是在查找ID,则不需要.SelectMany()

我们可以查看更多XML吗?足以说明结构吗?根据您提供的XML片段测试代码是不可能的。例如,
xdoc.Elements(“Locations”)
返回什么?他不需要这个,因为他使用的是已经只返回根元素的XElement.Load(string uri)。从他的问题来看,他的XML文件中似乎有多个
Locations
元素:“西班牙和南美还有其他类似的块。”因此,这里有一个我们不知道的结构,他确实需要从许多元素中只选择一个
位置
元素的子元素。我相信他需要将
XElement.Load()
更改为
XDocument.Load()
。我测试了XElement.Load(),它工作得非常好,消除了那种奇怪的“先获取根元素”首先,谢谢你的回复。我的问题最终是变量实验室的一个输入错误。我有一个逃逸的符号,它应该是一个符号。我纠正了这个问题,结果还是写得那么好。但我喜欢你的答复,因为它简短明了。