0
次のフラグメントは、 "JOSE"を含む "Name"要素を含む "DpsRecord"要素を削除します。しかし、私はどのようにルートにLinqクエリを適用し、dpsRecords(クエリの左側)を取得してからdpsRecordsを削除した後、どの要素がルートでも削除されることを理解していません。LinqからXMLへのノードの削除方法
XElement root = XElement.Load("input.xml");
IEnumerable<XElement> dpsRecords = from elem in
root.Elements("DpsRecord")
where (((string)elem.Element("Name")).Contains("JOSE"))
select elem;
foreach (XElement elem in dpsRecords)
{
elem.Remove();
}
root.Save("output.xml");
確かに、クエリを適用した後、 "ルート"(XElement変数)のサブセットであるdpsRecordsでノードが削除されていることを理解しています。あなたには明らかですが、dpsRecordsでの削除がルートでの削除をどのようにして行うのでしょうか。 – MicMit
コードで使用するRemoveメソッドとリンクして、ノードを親ノードから削除し、IEnmerableから削除しません。だから私はあなたの問題が表示されません、メソッドは、そのドキュメントが何を言うか、つまり、ノードを親ノードから削除します。これは、サンプルコードの 'ルート' XElementノードです。つまり、 'IEnumerable'や 'XElement []'や 'List 'を持っていても、XElementでそのRemoveメソッドを呼び出すと、XElementは親ノードから削除され、列挙するコレクションからは削除されません。 –