【C#】LINQ to XML 消すだけでもなかなか苦労した話
XMLファイルの操作の中で、要素の削除にわりと手間取った。
試行錯誤した結果、以下のコードでやりたいことが実現した。
〇削除したいXML
<?xml version="1.0" encoding="utf-8" ?> <Root> <TestElement>TEST</TestElement> </Root>
〇プログラム
public static void DeleteElement() { XDocument xmlDoc = XDocument.Load(”File”); var query = from y in xmlDoc.Descendants("Root") select y; query2.Elements("TestElement").Remove(); ///☆ xmlDoc.Save(”File"); }
〇結果
<?xml version="1.0" encoding="utf-8" ?> <Root></Root>
☆印のquery2.Elementsがミソで、Rootの中の要素を全て読み込んでいる。
その要素たちをRemove()で消している。
いままでクエリをforeachで回し、要素を順番に消そうとしていたがなぜか途中でエラーを吐いて止まるので困っていた。
ようやく有効な手立てが見つかってよかったのだ。