了解使用linq解析xml

时间:2011-03-09 06:49:37

标签: c# linq linq-to-xml

我这里只是有一些代码来澄清我对linq xml解析的怀疑。我有以下内容:

...
{

            XDocument xmlDoc = XDocument.Load(@"C:\Build.xml");
            var abc = from example in xmlDoc.Descendants("target")
                      select (string)target.Attribute("if");
            ...
            foreach(string example in abc)
           {
            ...
           }

            ...
           }

我可以问一下select (string)target.Attribute("if")行中是否属实 我正在从“if”的值中选择xml文件中的字符串,如下面的xml文件中所示:

<xml>
<target if="thevalue">
</target>
</xml>

然后我有这条线: foreach(string example in abc)

对于“if”属性的“value”的每个选定字符串,我是否在foreach循环中执行某些操作。

1 个答案:

答案 0 :(得分:3)

是的,这是正确的。 foreach循环中的变量“example”将包含“if”属性的值。

  var abc = from target in xDocument.Descendants("target")
            select (string)target.Attribute("if");

  foreach (var example in abc)
  {
    Console.WriteLine(example);
  }

在控制台应用程序中尝试上述代码,您将在控制台窗口中看到这些值。或者您可以在不同类型的应用程序中使用Debug.WriteLine(示例)

这是一个更好的linq查询表达式

  var abc = from target in xDocument.Descendants("target").Attributes("if")
            select target.Value;

或将您的linq查询表达式更改为

  var abc = from target in xDocument.Descendants("target")
            select target.Attribute("if").Value;

修改 为了帮助您解决调试器问题: 我已将鼠标移到abc上,我看到调试器弹出信息窗口,如下图所示

enter image description here

第一张图片显示“结果视图”有绿色箭头。您需要先点击这些箭头才能看到结果(如旁边的消息所示)

然后第二张图片会显示结果 enter image description here