-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")
            )
      )
  );

最終的には、[ベンチと日付]フィールドに追加したいと思います。

私は次のようなことを試しました:

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. がルートxml要素である場合、doc.Element("Schedule").Element("Team").Element("Dates")セグメント内にElement("Schedule")余分なものがあります。doc == xeSchedule
  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 に答える