I do so much. I support a set of helper functions for processing XML files - individual C # project files. Try it:
param ($ path)
$ MsbNS = @ {msb = 'http://schemas.microsoft.com/developer/msbuild/2003'}
function RemoveElement ([xml] $ Project, [string] $ XPath, [switch] $ SingleNode)
{
$ nodes = @ (Select-Xml $ XPath $ Project -Namespace $ MsbNS | Foreach {$ _. Node})
if (! $ nodes) {Write-Verbose "RemoveElement: XPath $ XPath not found"}
if ($ singleNode -and ($ nodes.Count -gt 1)) {
throw "XPath $ XPath found multiple nodes"
}
foreach ($ node in $ nodes)
$ parentNode = $ node.ParentNode
[void] $ parentNode.RemoveChild ($ node)
}
}
$ proj = [xml] (Get-Content $ path)
RemoveElement $ proj '// msb: None / msb: Generator' -SingleNode
$ proj.Save ($ path)
Keith hill
source share