このxmlの子XML要素を作成しようとしています。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
このPowerShellスクリプトを使用します。
[xml] $doc = Get-Content($filePath)
$child = $doc.CreateElement("newElement")
$doc.configuration.AppendChild($child)
エラーが発生しました:[System.String]に 'AppendChild'という名前のメソッドが含まれていないため、メソッドの呼び出しに失敗しました。
ドット表記を使用してXMLファイル(たとえば_$doc.configuration
_)をナビゲートする場合、Powershellは返される内容について賢くしようとします。
String
を返します。XmlElement
を返します。Object[]
_を返します。ここで、個々の配列要素は再びこれらのルールに従います。その内容に応じて、String
またはXmlElement
になります。$null
_を返します。あなたの場合、ドキュメント要素にノードを追加したいので簡単です:
_$doc = New-Object System.Xml.XmlDocument
$doc.Load($filePath)
$child = $doc.CreateElement("newElement")
$doc.DocumentElement.AppendChild($child)
_
ただし、$doc.SelectNodes()
または$doc.SelectSingleNode()
を使用してXMLドキュメント内を移動し、常にノード/ノードリストを返すことができます。
この振る舞いの感性について議論することもできますが、実際には、(構成ファイルからの値の読み取りやAPI応答からの値の読み取りなどの)タスクを使用する(健全に構造化された)XMLを非常に簡単にします。それがこの単純な構文の目的です。
creating XMLには適したツールではありませんが、これはより複雑なタスクです。ここでは、最初からDOM APIメソッドを使用する方が適切です。