我有以下XML
XElement xe =
new XElement("Schedule",
new XElement("Team",
new XElement("Name", "SomeName"),
new XElement("Dates"),
new XElement("Game",
new XElement("Bench"),
new XElement("Date")
)
)
);
最终我想要添加到Bench和Date字段。
我尝试过类似的事情:
foreach(Name name in names)
{
doc.Element("Schedule").Element("Team").Element("Dates")
.Elements()
.FirstOrDefault(item => (string)item.Parent.Element("Name") == name.TeamName)
.Add(
new XElement("Game",
new XElement("Bench", "SomeBench"),
new XElement("Date", SomeDate.ToShortDateString())
)
);
}
我没有将Object设置为对象错误的实例。
任何帮助都会很棒
编辑:忘了提到插入会发生循环
我的最终结果将最终结果如下:
<Schedule>
<Team>
<Name>SomeName</Name>
<Dates>
<Bench>SomeBench</Bench>
<Date>12/10/2012</Date>
</Dates>
</Team>
<Team>
<Name>SomeName2</Name>
<Dates>
<Bench>SomeBench2</Bench>
<Date>12/13/2012</Date>
</Dates>
</Team>
<Team>
<Name>SomeName3</Name>
<Dates>
<Bench>SomeBench3</Bench>
<Date>12/16/2012</Date>
</Dates>
</Team>
</Schedule>
答案 0 :(得分:1)
原始OP的代码可能有一个例外,原因如下:
doc.Element("Schedule").Element("Team").Element("Dates")
中Element("Schedule")
段是额外的,如果doc == xe
,则Schedule
是根xml元素。.Elements()
段是额外的,因为Dates
中的xe
元素不包含任何子元素。这个问题让我非常困惑。不过我会尝试推测。
foreach (var dates in doc.Elements("Team")
.Where(t => names.Any(n => n.TeamName == t.Element("Name").Value))
.Select(t => t.Element("Dates")))
{
dates.Add(
new XElement("Bench", "SomeBench"),
new XElement("Date", SomeDate.ToShortDateString())
);
}