【2023年】これからブログを始める人へおすすめの書籍

Kissy

PowerShellでXMLファイルを読み込むよ! | Get-Content

作成: 更新:

enter image description here
こんにちは!ブログを始めて5日目のきっしーです。

今日は、PowerShellでXMLファイルを読み込んでみます。
今回は、以下のXMLファイル(books.xml)を扱います。

<?xml version="1.0" encoding="utf-8"?>
<books>
<book isbn="0123456789">
<title>ぶろぐはじめました</title>
<author>kissy</author>
<date>2017-09-02</date>
</book>

<book isbn="abcdefghij">
<title>PowerShellはじめました</title>
<author>kissy</author>
<date>2017-09-03</date>
</book>
</books>

[xml] Get-ContentでXMLを読み込む

XMLファイルを読み込んで、オブジェクトとして変数に入れます。
このオブジェクトは「System.Xml.XmlDocument」になります。

$xmldoc = [xml](Get-Content "c:\temp\books.xml")

Create-Objectを使えば、以下のようにもかけます。

$xmldoc = Create-Object System.Xml.XmlDocument
$xmldoc.Load("c:\temp\books.xml")

特定の要素を取り出す

上記、$xmldocは「System.Xml.XmlDocument」なので、
XmlDocuementのメンバーやプロパティを使ってXMLを操作できます。
また、PowerShellでは"."(ピリオド)でXMLの要素を特定することもできます。

“.”(ピリオド)でXMLの要素を取り出す

“.”(ピリオド)でXMLの要素を取り出します。
以下の例では、books要素の下のbook要素を取り出しています。

例のXMLでは、book要素は2つあるので、$booksはbook要素オブジェクトの配列になります。
もちろん配列なので、foreachを使って処理できます。

$books = $xmldoc.books.book
foreach($item in $books)
{
# ... 何らかの処理
}

ほかにもより詳細にXMLの要素を探索する方法があります。
探索の方法は、また別な記事にまとめますね。

[xml]でXMLを読み込む

XMLはファイルからだけではなく、文字列からも読み込めます。

$xmldoc = [xml]"<books><book><title>文字列からXMLを読み込むよ</title></book></books>"

Create-Objectを使えば、以下のようにもかけます。

$xmldoc = Create-Object System.Xml.XmlDocument
$xmldoc.LoadXml("<books><book><title>文字列からXMLを読み込むよ</title></book></books>")

文字列からXMLを読み込むという手法、これはXMLを解析する場合ではなく、
主にXMLを作成したい場合などに用います。

作成したいXMLのテンプレートを文字列で用意し、要素や属性の値を変更する。
こうすることで、要素や属性の生成のコードを省略することができます。

関連記事

SPONSORED LINK
SPONSORED LINK