Я использую PowerShell для разбора C# проекта файл, который является стандартным XML-файл:Powershell: [xml] .SelectNodes не возвращает ожидаемые результаты?
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<CodeAnalysisRules>-Microsoft.Design#CA2210;Microsoft</CodeAnalysisRules>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
</Project>
Я хочу, чтобы выбрать из «CodeAnalysisRules» содержимое тегов с помощью «SelectNodes» функции:
function f($fileName)
{
Write-Host "Parsing $fileName"
[xml]$xml=Get-Content $fileName
if([String]::IsNullOrEmpty($xml.Project.NamespaceURI))
{
write-Host "skip!" -ForegroundColor Yellow
}
else
{
[System.Xml.XmlNamespaceManager]$ns = $xml.NameTable
$ns.AddNamespace("Any", $xml.DocumentElement.NamespaceURI)
$ns
$nodes = $xml.SelectNodes("//CodeAnalysisRules",$ns)
$nodes.Count
}
}
f d:\m.xml
я ожидал получить строку внутри, но на самом деле я получил:
Parsing d:\m.xml
xmlns
xml
Any
0
Что-нибудь не так с моей программой или предположения? Спасибо!
'$ xml.SelectNodes ("// Любые: CodeAnalysisRules", $ нс) ' – PetSerAl