2

を使用してxmlノードを削除できます

 XmlNode node = newsItem.SelectSingleNode("XYZ");
 node.ParentNode.RemoveChild(node);

しかし、たとえば複数のノードを一度に削除したい場合はどうすればよいXYZ,ABC,PQRでしょうか?

これらのノードをすべて一度に削除する方法はありますか、それとも 1 つずつ削除する必要がありますか?

注: XYZ,ABC,PQR同じレベルにある (つまり、すべて同じ親を持つ)

4

3 に答える 3

4

APIを使用する場合は何も組み込まれていませんXmlDocumentが、次のようなユーティリティ拡張メソッドを作成できます。

public static void Remove(this XmlNode node, string xpath)
{
    var nodes = node.SelectNodes(xpath);
    foreach (XmlNode match in nodes)
    {
        match.ParentNode.RemoveChild(match);
    }
}

次に呼び出します。

newsItem.Remove("XYZ|ABC|PQR");

XDocumentAPIに変更できる場合は、状況が異なる場合があります。

于 2012-10-15T13:06:22.830 に答える
2

linq to xml を使用してそのようなことができると思います。

var listOfNodesToRemove = new[]{"XYZ", "ABC", "PQR"};

var document = XDocument.Load(<pathtoyourfile>);
document.Descendants
        .Where(m => listOfNodesToRemove.Contains(m.Name.ToString())
        .Nodes()
        .Remove();
于 2012-10-15T13:05:51.843 に答える
1

それは構造(ネスト)などに大きく依存します。

しかし、基本的には、関係のない少数の要素については、一度に 1 つずつ選択して削除します。

それらをある程度組み合わせることができます:

List<string> RemoveNames = ...
var toBeRemoved = doc.Descendants().Where(d => RemoveNames.Contains(d.name));
foreach (var element in toBeRemoved.ToList()) ...
于 2012-10-15T13:04:14.487 に答える