属性を取得する
ここでは属性を取得する方法について説明します。
特定の要素の属性を取得するにはXmlElement
オブジェクトget_Attributes()
メソッドを使用します。このメソッドはXmlAttributeCollection
というコレクションを返すのでforeachによる取り出しが可能です。
下記はforeachによりroot
要素が持つ属性すべての属性名とその値を表示します。属性名の取得にはget_Name()
メソッドを、属性値の取得にはget_Value()
メソッドを使用します。
PS> foreach ( $attr in $xmlDoc.root.get_Attributes() ) >> { >> $attr.get_Name() #属性名の表示 >> $attr.get_Value() #属性値の表示 >> } >>
要素を置換する
ここでは要素を置換する方法について説明します。
要素は、要素名とその値を別のものに置換することが可能です。例として、要素名child1をNewChild1に、その値を100に置換する例を示します。
はじめに「NewChild1」という名称のXmlElement
オブジェクトを作成し$NewElement
へ代入します。
次に、$NewElement
が持つset_InnerText()
メソッドを使用して要素の値「100」をセットします。
最後にroot要素のReplaceChild()
メソッドを使用して要素の置換を行います。このとき、置き換え先の要素は$root.get_ChildNodes()
で取得した最初の要素(Item(0)
)とすることでchild1を指定したことになります。
PS> $NewElement = $xmlDoc.CreateElement("NewChild1") PS> $NewElement.set_Innertext("100") PS> $xmlDoc.root.ReplaceChild($NewElement, $xmlDoc.root.get_ChildNodes().Item(0)) PS> $xmlDoc.root
指定した子要素を削除する
ここでは子要素を削除する方法について説明します。
指定した子要素を削除するにはRemoveChild()
メソッドを使用します。引数に削除する子要素を指定します。
下記はget_ChildNode()
メソッドで取得した0番目の要素、つまりNewChild1を削除します。
PS> $root.RemoveChild($root.get_ChildNodes().Item(0)) PS> $root
まとめ
今回は、既存のXMLデータからのデータ取得や要素の変更などについて説明しました。各要素を操作するメソッド自体は非常にシンプルであり、習得することは容易です。ぜひこれらの操作方法を身につけていただければと思います。
次回は、XPathNavigator
クラスを用いて効率のよいデータ検索を行う方法について説明します。どうぞお楽しみに。
参考文献
- HIRO's.NET
- PowerShell from Japan!!
- 『Windows PowerShell ポケットリファレンス』 牟田口大介 著、技術評論社、2008年4月
- 『Windows PowerShell クックブック』 Lee Holmes 著、マイクロソフト株式会社ITプロ エバンジェリストチーム 監訳/監修、菅野良二 訳、オライリージャパン、2008年10月