1

要素を追加するのに助けが必要です、今私はこれをやっています:

XDocument xDoc = XDocument.Load(testFile);
xDoc.Descendants("SQUIBLIST")
    .FirstOrDefault()
    .Add(new XElement("Sensor", 
            new XAttribute("ID", id + 1), 
            new XAttribute("Name", "Squib" + (id + 1).ToString()), 
            new XAttribute("Used", "True")));
xDoc.Save(testFile);

そして私は(例えば)を得ています:

   <Sensor ID="26" Name="Squib26" Used="True" />

私が欲しいのはこれです:

   <Sensor ID="26" Name="Squib26" Used="True"></Sensor>

そして、私はそれを行う方法を見つけることができません。ピーズは私に手がかりを与えます。ありがとう!

4

2 に答える 2

4

空の文字列を含めて、空のテキストノードを追加するように強制できます。

new XElement("Sensor", 
    new XAttribute("ID", id + 1), 
    new XAttribute("Name", "Squib" + (id + 1).ToString()),
    new XAttribute("Used", "True"),
    "")

ただし、なぜこれが本当に必要なのかを検討する必要があります。通常、XMLを読み取るアプリケーションは、違いを気にする必要はありません。

また、要素がない場合は、を呼び出すFirstOrDefault().Add(...)と失敗することに注意してください。を返すのではなく、そのような要素がない場合に失敗する可能性があるよう、少なくとも使用する方が明確です。NullReferenceExceptionSQUIBLISTFirst()null

于 2013-02-06T15:36:44.540 に答える
2

これを試して:

 xDoc.Descendants("SQUIBLIST")
      .FirstOrDefault()
      .Add(
             new XElement("Sensor", 
             new XAttribute("ID", id + 1), 
             new XAttribute("Name", "Squib" + (id + 1).ToString()), 
             new XAttribute("Used", "True")
             ,"" //<-- this will represent the value of <Sensor>
));
于 2013-02-06T15:38:11.857 に答える