SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

Windows PowerShell 活用編(8)
XMLデータの基本操作2

  • X ポスト
  • このエントリーをはてなブックマークに追加

属性を取得する

 ここでは属性を取得する方法について説明します。

 特定の要素の属性を取得するには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クラスを用いて効率のよいデータ検索を行う方法について説明します。どうぞお楽しみに。

参考文献

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3755 2009/04/03 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング