はじめに
前回の記事ではPowerShell上でXMLファイルを作成する方法について説明しました。今回は既存のXMLデータの要素を操作する方法について説明します。
対象読者
- Windows PowerShellの基本操作が行える方
- XMLについて基本知識を有する方
ルート要素を取得する
ここではXMLデータからルート要素を取得する方法について説明します。
まずは事前準備として、前回作成したXMLファイルを下記のようにして読み込みます。
PS> $xmlDoc = [XML](Get-Content "C:\Work\Sample.xml")
通常、ルート要素名が分かっている場合は、XmlDocument
オブジェクト変数とルート要素名をドット(.)で連結することでルート要素を取得することができます。
例えば、ルート要素名が「root」の場合には下記のようにして取得することができます。
PS> $xmlDoc.root
![](http://cz-cdn.shoeisha.jp/static/images/article/3755/image2.gif)
しかし、読み込んだXMLデータのルート要素名が分からない場合には、要素名を指定しての取得は行うことができません。XmlDocument
オブジェクト変数からルート要素を取り出すには、get_DocumentElement()
メソッドを使用します。
PS> $root = $xmlDoc.get_DocumentElement()
![](http://cz-cdn.shoeisha.jp/static/images/article/3755/image3.gif)
これで$root
変数にルート要素が代入されました。このようにして取得した$root
変数はXmlElement
型となります。
次に、ルート要素名の取り出しですが、XmlElement
オブジェクトのget_Name()
メソッドを使用します。
PS> $root.get_Name()
![](http://cz-cdn.shoeisha.jp/static/images/article/3755/image4.gif)
上記の結果を見ると分かるように、現在取り扱っている$xmlDoc
のルート要素名が「root」であるということが分かりました。
子要素の存在を確認する
ここでは指定した要素が子要素を持っているかどうかを確認する方法について説明します。
子要素の存在は、XmlElementオブジェクトのget_HasChildNodes()
メソッドで確認することができます。このメソッドはブール値を返し、子要素が存在する場合にはTRUE
を、存在しない場合にはFALSE
を返します。
先ほどの$root
変数の子要素を確認するには、下記のようにします。
PS> $root.get_HasChildNodes()
![](http://cz-cdn.shoeisha.jp/static/images/article/3755/image5.gif)
結果を見ると分かるとおり、子要素があるのでTRUE
が返されます。