PowerShell-XML-SelectNodes nicht verarbeiten-XPath
Ich möchte eine Liste mit allen Projekt-Referenzen in meinem csproj-Datei mit PowerShell. Derzeit habe ich den folgenden Ansatz:
[xml]$csproj = Get-Content MyProject.csproj
$refs = $csproj.SelectNodes("//ProjectReference")
foreach($ref in $refs) {
# Later on output more useful information
Write-Host $ref.Name
}
Allerdings das Skript keine Ausgabe von nichts, obwohl es da sicherlich ProjectReference Elemente in der gegebenen csproj-Datei. Die folgenden arbeiten:
[xml]$csproj = Get-Content MyProject.csproj
foreach($l in $csproj.Project.ItemGroup.ProjectReference) { Write-Host $l.Include }
Aber ich brauche XPath-später als gut + es gibt Fehler für jede Artikelgruppe die nicht enthalten eine ProjectReference - so wie man XPath-Arbeit mit der SelectNodes
Funktion?
Beispiel-XML (im Prinzip alle VS csproj-Datei mit Projekt-Referenzen tun):
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup></ItemGroup>
<ItemGroup>
<ProjectReference Include="Text"></ProjectReference>
<ProjectReference Include="Text2"></ProjectReference>
</ItemGroup>
<ItemGroup></ItemGroup>
</Project>
- Wären Sie in der Lage, fügen Sie eine Beispiel-XML-Dokument, stellt das beschriebene Verhalten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist das
http://schemas.microsoft.com/developer/msbuild/2003
namespace. Sie müssen dies berücksichtigen, namespace in Ihrem XPath-Ausdrücke, wie unprefixed element-Namen in XPath beziehen sich auf Elemente, die nicht in einem namespace.(adaptiert von diese Antwort)