B)前回に引き続きXPathNavigatorによるXMLファイル操作について説明します。今回はXMLデータ内の移動、データの編集、削除を解説します。現在の要素の前に新しい要素を挿入する現在の要素の後ろに新しい要素を挿入する要素を削除する変更結果をファイルに保存するまとめはじめに前回に引き続き、XPathNavigatorを利用したXMLファイル操作方法について説明します。今回は特に、XMLデータ内の移動、データの編集、削除について説明します。サンプルのコードを動作させるには、記事に添付されている「population.xml」を使用します。必要に応じて「population.zip」をダウンロードし、解凍してお使いください。PowerShellの基本操作が行える方。XMLについて基本知識を有する方。サンプルファイルについてサンプルの「population.xml」は、県別の人口データを格納したファイルとなっています(説明用に作成したものです)。データには、ルート要素として<population_data>、子として1つの県を表す<prefecture>要素があります。<prefecture>には属性districtがあり、これは地方を表しています。<prefecture>は子として県名を表す<name>と人口を表す<population>を持ちます。岩手県を表す要素には子要素として<municipality>を持ち、市町村名を表す<name>と人口を表す<population>があります。構成は下記の通りです。データの変更データの変更が可能なXPathNavigatorを作成するXPathNavigatorは、XmlDocumentまたはXPathDocumentから作成することができます。データを変更できるのはXmlDocumentから作成されたXPathNavigatorオブジェクトに限定されています。よって、データの編集が可能なXPathNavigatorは、下記のようにXmlDocumentオブジェクトから作成します。CanEditプロパティを調べることでわかります。この値は読み取り専用であり、変更することができません。XmlDocumentから作成されたXPathNaigatorはTRUEを返します。$Navi.CanEdit値の変更まずは要素の値を変更する方法について説明します。XPath式で表すと/population_data/prefecture/populationとなります。前回の記事で説明したように、このXPath式をSelectメソッドの引数に渡して1つずつ処理を行います。値の変更はSetValueメソッドで行います。引数には変更後の値をセットします。下記は、すべての県の人口データを$nodesに格納した後、1件ずつ「0」をセットします。値が変更されたかどうかをInnerXmlプロパティで確認します。$Navi.InnerXml結果から、すべての県の人口が0に変更されていることを確認できます。特定の属性を持つ要素の値変更ここでは特定の属性を持つ要素の値を変更する方法について説明します。"関東"の人口データを0にする属性districtは地方を表しており、サンプルデータには「東北」と「関東」の2種類があります。districtが「関東」になっているデータの人口を0にするには、XPath式で"/population_data/prefecture[@district='関東']/population"を指定し、Whileループで1件ずつ「0」をセットします。$nodes.Current.SetValue("0")}値が変更されたかどうかをInnnerXmlプロパティで確認します。印刷用を表示ブックマークツイート著者プロフィールHIRO(ヒロ)HIRO's.NETのHIROです。とある半導体工場のSEです。PowerShellによるプログラミングを楽しんでいます。PowerShellについて書いています。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。