C# 理解使用linq解析xml
我这里有一些代码来澄清我对LINQXML解析的疑问。我有以下资料:C# 理解使用linq解析xml,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,我这里有一些代码来澄清我对LINQXML解析的疑问。我有以下资料: ... { XDocument xmlDoc = XDocument.Load(@"C:\Build.xml"); var abc = from example in xmlDoc.Descendants("target") select (string)target.Attribute("if"); ...
...
{
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)
{
...
}
...
}
我可以问一下,在行中选择(字符串)target.Attribute(“if”)
我正在从xml文件中选择一个字符串,其值为“if”,如下所示:
<xml>
<target if="thevalue">
</target>
</xml>
那么我有一句话:
foreach(abc中的字符串示例)
对于“if”属性的“value”的每个选定字符串,我都在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);
}
在控制台应用程序中尝试上述代码,您将在控制台窗口中看到这些值。也可以在不同类型的应用程序中使用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上,我看到调试器弹出信息窗口,如下图所示
第一个图像显示“结果视图”中有绿色箭头。您需要单击这些箭头才能看到结果(如旁边的消息所示)
然后,第二个图像显示结果
是的,这是正确的。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上,我看到调试器弹出信息窗口,如下图所示
第一个图像显示“结果视图”中有绿色箭头。您需要单击这些箭头才能看到结果(如旁边的消息所示)
然后,第二个图像显示结果
逐步完成调试器,看看它能告诉您什么。我添加了一个断点,并检查了abc是什么。他们说:{System.Linq.Enumerable.WhereSelectEnumerableTerator}base{System.Linq.Enumerable.Iterator}:{System.Linq.Enumerable.WhereSelectEnumerableTerator}我不确定它是否正确,请逐步通过调试器,看看它告诉您什么。我添加了一个断点,并检查了abc是什么。这就是他们说的:{System.Linq.Enumerable.WhereSelectEnumerableIterator}base{System.Linq.Enumerable.Iterator}:{System.Linq.Enumerable.WhereSelectEnumerableIterator}我不知道是不是correct@jeremychan我已经编辑了我的答案,其中包括一些图片,我认为这些图片可能会帮助您了解为什么您没有看到变量abc(它是一个IEnumerable或某种类型)中的值@jeremychan我编辑了我的答案,包括一些图片,我认为这些图片可能有助于解释为什么你看不到变量abc中的值(它是一个IEnumerable或某种类型)