編集複数のXMLファイルにPowerShellを使用して
-
22-09-2019 - |
質問
どのように私はPowerShellの?
を使用して、第2のルートノードの下に要素を追加指定されたディレクトリから、各ファイルに対して複数のXMLファイルのリストを取得することができます例:
私が最初に<LastName>SomeName</LastName>
要素内<Names>
を追加したい:
<People>
<Names>
<FirstName>someFirstName</FirstName>
</Names>
<Names>
<FirstName>myFirstName</FirstName>
<Address>SomeAddress</Address>
</Names>
</People>
となります:
<People>
<Names>
<LastName>SomeName</LastName>
<FirstName>someFirstName</FirstName>
</Names>
<Names>
<FirstName>myFirstName</FirstName>
<Address>SomeAddress</Address>
</Names>
</People>
解決
あなたはCreateElement
とAppendChild
方法
Get-ChildItem c:\temp\ *.xml |
% {
$xml = [xml](Get-Content $_.fullname)
$lastName = $xml.CreateElement('LastName')
$lastName.PsBase.InnerText = 'SomeName'
$null = $xml.People.Names[0].AppendChild($lastName)
$xml.Save($_.FullName)
}
あなたはPowerShellのV2を実行している場合には、あなたが使用プロパティPsBase
する必要はありません。
$lastName.InnerText = 'SomeName'
が存在を確認してください他の方法のためのものであるが、これは1つが非常に簡単です。
<時間>ノードは、XMLでより深いであろうとする場合には、あなたが(最初Names
ノードを見つけるの両方)、このようのXpathを使用する場合があります:
$node = (Select-Xml -Xml $x -XPath '//Names[1]').Node
$node = (Select-Xml -Xml $x -XPath '//Names[position()=1]').Node
所属していません StackOverflow