Mi capita alle volte di fare query xpath e di non veder restituito nulla... capita quando ci sono i namespaces di mezzo :)

...e tutte le volte me ne dimentico!!!

Posto un esempio che ho appena fatto per poter settare a "False" tutti i CopyLocal="True" di un progetto di Visual Studio.NET

image

1 private void ProcessProj(string file) 2 { 3 XmlDocument doc = new XmlDocument(); 4 doc.Load(file); 5 6 bool isChanged = false; 7 8 // aggiungo il namespace 9 XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); 10 ns.AddNamespace("pr", "http://schemas.microsoft.com/developer/msbuild/2003"); 11 12 // prendo i nodi che hanno private a true 13 XmlNodeList nodes = 14 doc.SelectNodes(@"//pr:Project/pr:ItemGroup/pr:Reference/pr:Private[text()='True']", ns); 15 16 // faccio sostituzione 17 foreach (XmlNode nodename in nodes) 18 { 19 nodename.InnerText = "False"; 20 isChanged = true; 21 } 22 23 if (isChanged) 24 doc.Save(file); 25 } 26