-1

重複の可能性:
C#でxml要素を削除する方法は?

私がそのようなXMLドキュメントを持っているとしましょう:

<doc>
     <car>
         <color>Red</color>
         <size>compact</size>
     </car>
     <car>
         <color>Yellow</color>
         <size>mid-size</size>
     </car>
</doc>

そして、属性が黄色の車のエントリ全体を削除したかったので、xmlファイルは次のようになります。

<doc>
     <car>
         <color>red</color>
         <size>compact</size>
     </car>
</doc>

どうすればいいですか?私は高低を検索して解決策を見つけましたが、残念ながらc#は検索しませんでした。

4

3 に答える 3

1

Linq to XML を使用できます。

  var yellowCars = from car in xDoc.Elements("doc").Elements("car") 
                     where car.Element("Color").Value == "Yellow" 
                     select car;

    foreach (var car in yellowCars)
    {
        car.Remove();
    }

  xDoc.Save();
于 2012-10-12T01:58:54.193 に答える
0

この状況を常に処理する方法: ファイル全体をメモリにロードします。これは、xml を c# クラスまたは xmlnode 構造に逆シリアル化することで実行できます。これに関するチュートリアルはたくさんあります。その後、リストまたは配列を編集してから、ファイル全体を再シリアル化して上書きします。ファイルに何百ものレコードが含まれていなければ、顕著なパフォーマンスの問題はないはずです

于 2012-10-12T01:34:28.390 に答える
0
using System.Xml.XPath;

...

var doc = XDocument.Parse(xml);
var list = new List<XElement>();
foreach (var element in doc.XPathSelectElements(@"/doc/car[color='Yellow']")) {
    list.Add(element);
}
foreach (var element in list) element.Remove();

更新: そのため、反復中にコレクションを変更していませんでした。

于 2012-10-12T01:36:56.297 に答える