第10章 構造化ファイル 構造化ファイル
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
10.0 はじめに
テキストだけのシステム管理の世界では、構造化ファイルの管理はしばしば面倒だ。例えば、XMLファイルを扱う(あるいは編集する)には、それをエディタに読み込ませて手作業で修正するか、あるいはそれを行うカスタム・ツールを書くことになる。さらに悪いことに、XML自体の構造を壊さないようにしながら、ファイルをプレーン・テキストのように修正することもある。
同じ世界で、カンマ区切り値(CSV)形式のファイルを扱うということは、カンマで各行を区切りながら、自分でファイルを見ていくということだ。単純なデータ以外を発見するまでは、一見素晴らしいアプローチだ。
構造や構造化ファイルは、他のプログラミングからだけもたらされるものではない。スクリプトを書いていると、構造化されたデータを保存して、後で使えるようにすることが一つの共通の目標になる。ほとんどのスクリプト(およびプログラミング)言語では、そのためには、データを保持するためのデータ構造を設計し、ディスクからデータをストアしたり取り出したりする方法を設計し、再びデータを扱いたいときにユーザビリティのある形に戻す必要がある。
幸いなことに、XML、CSV、そして独自の構造化ファイルを扱うのも、PowerShellを使えばずっと簡単になる。
10.1 XMLファイルのアクセス情報
問題
、XMLファイル内の情報にアクセスしたい。
解決策
PowerShellのXMLキャストを使って、プレーンテキストのXMLを、より簡単に作業できる形に変換する。今回は、PowerShellブログからダウンロードしたRSSフィードを使用する:
PS > $xml = [xml] (Get-Content powershell_blog.xml)
注
PowerShellを使ってこのファイルをダウンロードする方法の詳細については、レシピ12.1を参照のこと:
Invoke-WebRequesthttps://devblogs.microsoft.com/powershell/feed/`-OutFilepowershell_blog.xml
他のリッチ・オブジェクトと同様に、PowerShellはXMLのプロパティを探索しながら表示する。例10-1に示すように、これらのプロパティはXMLの子ノードと属性である。
例 10-1. XMLドキュメントのプロパティにアクセスする
PS > $xml
xml xml-stylesheet rss
--- -------------- ---
rss
PS > $xml.rss
version : 2.0
dc : http://purl.org/dc/elements/1.1/
slash : http://purl.org/rss/1.0/modules/slash/
wfw : http://wellformedweb.org/CommentAPI/
channel : channelRSSフィードのアイテムノードのように)複数のノードが同じ名前を共有する場合、プロパティ名はノードのコレクションを表す:
PS > ($xml.rss.channel.item).Count 15
例10-2に示すように、通常配列を扱うように、それらの項目に個別にアクセスすることができる。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access