Supprimer le noeud XML

J’ai encore une autre tâche que je ne suis pas capable d’accomplir: je suis censé parsingr le code XML de ce site , supprimer tous les nœuds dont le nom ne contient pas “VIDEO”, puis l’enregistrer dans un autre fichier XML. Je n’ai aucun problème avec la lecture et l’écriture, mais le fait de m’enlever me cause quelques difficultés. J’ai essayé de faire le noeud -> noeud parent -> noeud de travail, mais cela ne m’a pas semblé utile:

static void Main(ssortingng[] args) { using (WebClient wc = new WebClient()) { ssortingng s = wc.DownloadSsortingng("http://feeds.bbci.co.uk/news/health/rss.xml"); XmlElement tbr = null; XmlDocument xml = new XmlDocument(); xml.LoadXml(s); foreach (XmlNode node in xml["rss"]["channel"].ChildNodes) { if (node.Name.Equals("item") && node["title"].InnerText.StartsWith("VIDEO")) { Console.WriteLine(node["title"].InnerText); } else { node.ParentNode.RemoveChild(node); } } xml.Save("NewXmlDoc.xml"); Console.WriteLine("\nDone..."); Console.Read(); } } 

J’ai également essayé la méthode RemoveAll, qui ne fonctionne pas aussi bien, car elle supprime tous les nœuds ne satisfaisant pas la condition “VIDEO”.

 //same code as above, just the else statement is changed else { node.RemoveAll(); } 

Pourrais-tu m’aider s’il te plait?

Je trouve que Linq To Xml est plus facile à utiliser

 var xDoc = XDocument.Load("http://feeds.bbci.co.uk/news/health/rss.xml"); xDoc.Descendants("item") .Where(item => !item.Element("title").Value.StartsWith("VIDEO")) .ToList() .ForEach(item=>item.Remove()); xDoc.Save("NewXmlDoc.xml"); 

Vous pouvez également utiliser XPath

 foreach (var item in xDoc.XPathSelectElements("//item[not(starts-with(title,'VIDEO:'))]") .ToList()) { item.Remove(); }