C# linq在具有相同名称的标记之间循环
我是新来的linq需要一些帮助 我有一个如下所示的xml文件:C# linq在具有相同名称的标记之间循环,c#,linq,C#,Linq,我是新来的linq需要一些帮助 我有一个如下所示的xml文件: <InputPath> <path isRename="Off" isRouter="Off" pattern="pattern-1">d:\temp1</path> <path isRename="Off" isRouter="pattern-1">d:\temp2</path> </InputPath> 但我只得到最后一个值
<InputPath>
<path isRename="Off" isRouter="Off" pattern="pattern-1">d:\temp1</path>
<path isRename="Off" isRouter="pattern-1">d:\temp2</path>
</InputPath>
但我只得到最后一个
值。任何帮助都会很好。您只能通过这种方式获得第一个元素,因为这是该方法提供给您的:具有给定名称的第一个子元素
如果您需要多个元素,您可以使用:
或者,使用扩展方法一次完成所有操作:
foreach (var path in rootElement.Descendants("InputPath").Elements("path"))
{
string value = path.Value;
// Use value here
}
如果这没有帮助,请提供更多关于您正在尝试做什么以及问题是什么的信息
如果“last”是指“元素内容”,那是因为您使用的是值
属性。如果希望在path元素中包含属性,则需要该方法,如iamstapper所示,尽管我个人通常会将XAttribute
强制转换为string(或任何内容),而不是使用Value
属性,以防属性丢失。(这取决于您希望在这种情况下行为是什么。)您只能通过这种方式获得第一个元素,因为这是该方法提供给您的:具有给定名称的第一个子元素
如果您需要多个元素,您可以使用:
或者,使用扩展方法一次完成所有操作:
foreach (var path in rootElement.Descendants("InputPath").Elements("path"))
{
string value = path.Value;
// Use value here
}
如果这没有帮助,请提供更多关于您正在尝试做什么以及问题是什么的信息
如果“last”是指“元素内容”,那是因为您使用的是
值
属性。如果希望在path元素中包含属性,则需要该方法,如iamstapper所示,尽管我个人通常会将XAttribute
强制转换为string(或任何内容),而不是使用Value
属性,以防属性丢失。(这取决于您希望在这种情况下行为是什么。)您需要的是像这样循环遍历属性
foreach (XElement xElem in rootElement.Descendants("InputPath"))
{
string isRename = xElem.Attribute("isRename").Value;
}
您需要的是,像这样循环遍历属性
foreach (XElement xElem in rootElement.Descendants("InputPath"))
{
string isRename = xElem.Attribute("isRename").Value;
}
您是否尝试过只枚举路径项
foreach (var element in rootElement.Descendants("path"))
{
var value = element.Value;
}
您是否尝试过只枚举路径项
foreach (var element in rootElement.Descendants("path"))
{
var value = element.Value;
}