質問

どのように私は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>
役に立ちましたか?

解決

あなたはCreateElementAppendChild方法

を使用してそれを行うことができます
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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top