PowerShell を使用して読み取りたい名前空間を持つ要素を含む xml ファイルがあります。
XML の例:
<ns0:Members xmlns:ns0="http://my.domain.com/subsite">
<Member>
<MemberDetails>
<Name>Blah de Blah Blah</Name>
<Email>blah@lost.com</Email>
</MemberDetails>
</Member>
</Members>
オンラインで見つけたいくつかの例から、XML を読み取るために次の PowerShell を作成しました。
function Get-ScriptDirectory
{
return Split-Path $script:MyInvocation.MyCommand.Path
}
$xmlFile = Join-Path (Get-ScriptDirectory) "MyXmlFile.xml"
[xml]$xmlDoc = Get-Content $xmlFile
$ns = new-object Xml.XmlNamespaceManager $xml.NameTable
$ns.AddNamespace("ns0", "http://my.domain.com/subsite")
$node = $xmlDoc.SelectNodes("ns0:Members")
ただし、次のエラーが表示されます。
New-Object : Constructor not found. Cannot find an appropriate constructor for type Xml.XmlNamespaceManager.
オンラインでエラーを検索しましたが、PowerShell のバージョンがバージョン 2 であることを再確認することを提案する唯一の投稿を見つけました。
を実行したところ$Host.Version
、次のことがわかりました。
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
PowerGui Editor を使用してスクリプトを実行したところ、$xml.NameTable
null であることがわかりました。
誰かが理由とそれを修正するために私ができることを説明できますか?
Members
別の注意として、要素を選択しようとした方法はどれもSelect-Xml
機能しませんでした$xmlDoc.SelectNodes
。私がそれを得ることができる唯一の方法は、以下を使用することでした:
$xmlDoc.Members