我一直在阅读Xpath查询(我在dotnet中使用的版本2),但仍然无法获取脚本来设置xml区域的内容。如何在powershell中做到这一点?
谢谢!
函数Get-XmlCsproj {
$ toolsPath =“ C:\”
[xml] $ axml =获取内容的路径“ $ toolsPath \ csproj03.csproj”
#输出正确的字符串; “某物”,但不能将其设置为等于某物
$ axml.Project.PropertyGroup.PreBuildEvent
#nil from;
$ axml.SelectSingleNode(“ / Project / PropertyGroup / PreBuildEvent”)
}
最佳答案
VS csproj文件中包含默认名称空间。因此,除另有明确规定外,所有元素都在该命名空间中。您可以尝试使用XPath来查询名称空间中的元素:
.....
# nil from ;
$ns = new-object Xml.XmlNamespaceManager $xml.NameTable
$ns.AddNamespace("d", "http://schemas.microsoft.com/developer/msbuild/2003")
$axml.SelectSingleNode( "/d:Project/d:PropertyGroup/d:PreBuildEvent")
相关:What is the syntax for accessing child nodes using System.Xml.XmlDocument.SelectNodes with a namespace?
关于xml - 如何使用Powershell解析VS2013 csproj XML文件以修改PreBuildEvent,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33863592/