gpt4 book ai didi

c# - 如何区分具有相同名称的不同后代?

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:56 25 4
gpt4 key购买 nike

我有一些 XML 试图用 C# 导入,它看起来像这样:

<root>
<run>
<name = "bob"/>
<date = "1958"/>
</run>
<run>
<name = "alice"/>
<date = "1969"/>
</run>
</root>

我使用

加载我的 xml
XElement xDoc=XElement.Load(filename);

我想做的是有一个“运行”类,我可以在它下面存储名称和日期:

 public class RunDetails
{
public RunDetails(XElement xDoc, XNamespace xmlns)
{
var query = from c in xDoc.Descendants(xmlns + "run").Descendants(xmlns + "name") select c;
int i=0;
foreach (XElement a in query)
{
this.name= new NameStr(a, xmlns); // a class for names
Name.Add(this.name); //Name is a List<NameStr>
i++;
}
// Here, i=2, but what I want is a new instance of the RunDetails class for each <run>
}
}

我如何设置我的代码来为每个 创建 RunDetails 类的新实例,并且只选择给定 中的

最佳答案

您可以只使用 LINQ to XML 从您的 XML 创建一个 IEnumerable。

IEnumerable<RunDetail> runDetails = from run in xdocument.Descendants("run")
select new RunDetail
{
Name = run.Element("name").Value,
Date = int.Parse(run.Element("date").Value)
};

当然,这表明有一个名为 RunDetail 的类具有公共(public)名称和日期(年份的整数)属性。您可以按原样迭代可枚举对象,或者如果您需要更明确地访问各个成员,则可以使用 .ToList() 或 .ToArray() 来转换查询。

关于c# - 如何区分具有相同名称的不同后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com