遇到了另一个挑战。我浏览了一些我在这里发现的问题,但我似乎无法拼凑出我需要的东西。
好的,我有一个XML文件:

<Output id="1">
    <path rename="Off" name="pattern-1">d:\temp</path>
  </Output>

  <Output id="2">
      <path isRename="False" name="pattern-1" >d:\temp\out2</path>
      <path isRename="True"  name="pattern-1" >d:\temp\out3</path>
      <path isRename="False" name="pattern-1">d:\temp\out4</path>
  </Output>

我需要做的是根据<Output>属性找到id标记。然后,我需要遍历所有<path>标记并获取属性和路径值。我试了几件事,基于我之前问过的一个问题,但我没能成功
var results = from c in rootElement.Elements("Output")
              where (string)c.Attribute("Id") == "2" select c;

foreach (var path in rootElement.Elements("Output").Elements("path"))
{
    string p  = path.Value;
}

最佳答案

如果你不真正使用结果,你的第一行就什么也做不了。

foreach (var outputElement in rootElement.Elements("Output")
                                         .Where(e => (string)e.Attribute("id") == "1"))
{
    foreach (var pathElement in outputElement.Elements("path"))
    {
        // ...
    }
}

如果您的id属性被保证是唯一的(它应该是唯一的),那么您可以去掉第一个foreach,直接获取单个<Output>
var outputElement = rootElement.Elements("Output")
                               .FirstOrDefault(e => (string)e.Attribute("id") == "1"));

10-05 19:03
查看更多