-1

我有以下 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 and 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())
           )
        );
}

我得到一个对象未​​设置为对象错误的实例。

任何帮助都会很棒

编辑:忘了提到插入会发生在循环中

我的最终结果会是这样的:

<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>
4

1 回答 1

1

原始 OP 的代码可能由于以下几个原因而出现异常:

  1. doc.Element("Schedule").Element("Team").Element("Dates")Element("Schedule")中是额外的,如果doc == xe,即Schedule是根xml 元素。
  2. .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())
        );
}
于 2012-11-02T02:58:21.150 回答