System.Xml.Linqオブジェクトを使用してプログラムで XML DOM を作成したいと考えています。文字列を解析したり、ディスクからファイルを読み込んで DOM を作成したりしたくありません。C# ではこれは簡単ですが、PowerShell でこれを行うことは不可能のようです。
オプション 1 : 機能しない
$xlinq = [Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
$el = new-Object System.Xml.Linq.XElement "foo"
これにより、次のエラーが発生します。
new-Object : Cannot convert argument "0", with value: "foo",
for "XElement" to type "System.Xml.Linq.XElement": "Cannot convert value "foo" to
type "System.Xml.Linq.XElement". Error: "Data at the root level is invalid.
Line 1, position 1.""
オプション 2:機能しない
$xlinq = [Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
$xname = New-Object System.Xml.Linq.XName "foo"
$el = new-Object System.Xml.Linq.XElement $xname
次のエラーが発生します。
New-Object : Constructor not found. Cannot find an appropriate constructor for type System.Xml.Linq.XName.
MSDN ( http://msdn.microsoft.com/en-us/library/system.xml.linq.xname.aspx )によると、「XName にはパブリック コンストラクターが含まれていません。代わりに、このクラスは String からの暗黙的な変換を提供します。 XName を作成できます。」