C# 正在尝试从xml linq查询获取列表项
我试图迭代xml文档中的元素列表,并以列表的形式返回每个元素的值。但是,它返回单个列表项中的所有值,并将它们连接在一起。是否有任何方法可以将每个元素值分离到其自己的列表项中 提前感谢,现在它返回“Item1Item2Item3”-相同的列表项C# 正在尝试从xml linq查询获取列表项,c#,xml,linq,C#,Xml,Linq,我试图迭代xml文档中的元素列表,并以列表的形式返回每个元素的值。但是,它返回单个列表项中的所有值,并将它们连接在一起。是否有任何方法可以将每个元素值分离到其自己的列表项中 提前感谢,现在它返回“Item1Item2Item3”-相同的列表项 public List<string> ReturnRow(string RowToReturn, string parentelement) { List<XElement> E
public List<string> ReturnRow(string RowToReturn, string parentelement)
{
List<XElement> ElementList = new List<XElement>();
List<string> ItemstoReturn = new List<string>();
try
{
//loop through whole doc and get blocks that match the Row (should only be 1)
ItemstoReturn = (from element in XmlDoc.Root.Elements(parentelement)
where element.Attribute(ParentAttribName).Value == RowToReturn
select element.Value).ToList();
//loop through inner elements to retrieve values
foreach (XElement eachelement in ElementList)
{
ItemstoReturn.Add(eachelement.Value);
}
//return values to list
return ItemstoReturn;
}
catch(Exception ex)
{
ex.ToString();
return null;
}
}
public List ReturnRow(string rowtore,string parentelement)
{
List ElementList=新列表();
List ItemstoReturn=新列表();
尝试
{
//循环遍历整个文档并获取与行匹配的块(应仅为1)
ItemstoReturn=(来自XmlDoc.Root.Elements(parentelement)中的元素)
where element.Attribute(ParentAttribName).Value==行返回
选择element.Value).ToList();
//循环内部元素以检索值
foreach(元素列表中的每个元素)
{
ItemstoReturn.Add(eachelement.Value);
}
//将值返回到列表
返回项目StoreTurn;
}
捕获(例外情况除外)
{
例如ToString();
返回null;
}
}
输入XML
<recipes>
<recipe name="vidmar"/>
<recipe name="oven">
<ESN>25058301</ESN>
<ESN>25058302</ESN>
</recipe>
</recipes>
你能举一个例子说明你到底得到了什么吗?我试图得到Item1,Item2,Item3,每个都是它自己独立的列表项,而不是所有相同的项。你能分享你的xml,
ElementList
它在ReturnRow
方法中从未被修改过吗?为什么?我理解你的问题。请共享示例xml以建议所需的更改-+-25058302 25058302 Krishna,非常感谢您的帮助!只是最近才开始使用linq im不是专家!谢谢你,小伙子,它成功了@StephenCarey。您可以将此标记为回答。很遗憾,我没有显示出来,因为我不到15岁/
using System.Xml.Linq; //namespace
...
string xml = File.ReadAllText(xmlFilePath);
XElement doc = XElement.Parse(xml);
var result = doc.Elements("recipe")
.Where(c => c.Attribute("name").Value == "oven");
foreach(var element in result.Descendants("ESN"))
{
Console.WriteLine(element.Value.ToString());
}