powershell を使用して vcxproj ファイルを解析しようとしています (実際には .NET クラス System.Xml.XmlDocument を使用)。この問題は、ルート要素の xmlns 属性に関係しているようです - 以下の xml ファイルの例を参照してください (元の xml の抜粋)
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
</Project>
powershell を使用して xml ファイルを開き、いくつかのノードを選択したいと考えています。しかし、これは実際にはノードを返しません。
[System.Xml.XmlDocument] $xml = new-object System.Xml.XmlDocument
$xml.Load("/path/to/xml/file")
$nodes = $xml.SelectNodes("//ProjectConfiguration")
すでに名前空間マネージャーを追加しようとしましたが、それは役に立ちませんでした:
[System.Xml.XmlDocument] $xml = new-object System.Xml.XmlDocument
$xml.Load("/path/to/xml/file")
$mgr=new-object System.Xml.XmlNamespaceManager($xml.Psbase.NameTable)
$mgr.AddNamespace("gr",$xml.configuration.psbase.NamespaceURI)
$nodes = $xml.SelectNodes("//ProjectConfiguration")
ルート要素の xmlns 属性を削除すると、すべて正常に動作します。
よろしく、ヨハネス