了解使用linq解析xml
我只是在这里有一些代码来澄清我对linq 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")
我从价值选择从XML文件中的字符串“如果”如下面的XML文件中所示:
<xml>
<target if="thevalue">
</target>
</xml>
然后我有这样一行: foreach(string example in abc)
这是真的,对于“价值”的每一个选择的字符串“如果”属性,我做的foreach循环的东西。
是的,这是正确的。 foreach循环中的变量“example”将包含“if”属性的值。
var abc = from target in xDocument.Descendants("target")
select (string)target.Attribute("if");
foreach (var example in abc)
{
Console.WriteLine(example);
}
在控制台应用程序中尝试上述代码,您将看到控制台窗口中的值。或者你可以在不同类型的应用
这是一个更好的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;
的使用的Debug.WriteLine(例如)编辑 为了帮助您解决调试器的问题: 我把鼠标移到了abc上,我看到调试器弹出信息窗口,如下图所示
这第一个图像显示“结果视图”有那些绿色箭头。您需要点击这些箭头才能看到的结果(如消息旁边说)
然后第二个图像显示你的结果
+1 Nice调试器示例+截图。 – BoltClock 2011-03-09 07:37:32
@jeremychan我编辑了我的答案,包括一些图像,我认为可能会帮助你为什么你没有看到变量abc(这是一个IEumerable或某种)的值, – 2011-03-09 07:37:42
步骤通过调试,看看它会告诉你。 – BoltClock 2011-03-09 06:52:11
我添加了一个断点并检查了abc是什么。这就是他们所说的:{System.Linq.Enumerable.WhereSelectEnumerableIterator} base {System.Linq.Enumerable.Iterator }:{System.Linq.Enumerable.WhereSelectEnumerableIterator }我不确定它是否正确 –
jeremychan
2011-03-09 06:59:30